Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 объединение двух таблиц  [new]
начинающий51
Member

Откуда:
Сообщений: 43
Добрый вечер! Вопрос такой. Есть две таблицы с одинаковыми полями. Надо записи из 2 таблицы залить в таблицу 1 по такому условию: если запись из 2 таблицы равна записи из 1 - запись не заливать, если запись из 2 табл. не найдена в 1 табл. - заливать. спасибо
2 дек 11, 21:14    [11699266]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц  [new]
grigrim
Member

Откуда: Москва
Сообщений: 89
начинающий51,

MERGE
2 дек 11, 21:18    [11699285]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц  [new]
начинающий51
Member

Откуда:
Сообщений: 43
а если SQL2005?
2 дек 11, 21:27    [11699336]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц  [new]
Alexandr Kr.
Member

Откуда: Украина, Харьков
Сообщений: 165
начинающий51,

если долить недостающий записи из таблицы 2 в таблицу 1 то это
LEFT JOIN
2 дек 11, 21:29    [11699352]     Ответить | Цитировать Сообщить модератору
 Re: объединение двух таблиц  [new]
Начинающий SQL 2008
Member

Откуда:
Сообщений: 438
начинающий51, привет от начинающего

+ По материалам нашего форума
-- Узнать записи в 1-й таблице, которых нет во второй
declare @t1 table (Account varchar(100))
declare @t2 table (Account varchar(100))

insert into @t1
 select 'Фирма 1' union all select 'Фирма 2' union all select 'Фирма 3' union all select 'Фирма 4'
--select * from @t1 order by 1

insert into @t2
 select 'Фирма 2' union all select 'Фирма 4'
--select * from @t2


-- Способ 1. Самый быстрый способ -> через `not exists`
select account [Чего не хватает во 2-й таблице] from @t1 t1
where not exists (select account from @t2 t2 where t2.account = t1.account)

-- Способ 2. Помедленней через 'left join'
select t1.account [Чего не хватает во 2-й таблице] from @t1 t1
left join @t2 t2 on t1.Account = t2.Account
where t2.Account is null



--Найти записи, которые есть в одной таблице, но нет в другой
set nocount on;
declare @t table(x int NOT NULL, y int) 
declare @tt table(x int NOT NULL, y int) 
insert into @t values(1, 3) 
insert into @t values(2, 2) 
insert into @t values(3, NULL) 
insert into @t values(5, NULL)
insert into @tt values(1, 3)
insert into @tt values(3, NULL)
insert into @tt values(4, 3);

select * from @t select * from @tt

-- Мой велосипед. Тут нужны скобки
(select x, y from @tt
 except
 select x, y from @t)
union all
(select x, y from @t
except
select x, y from @tt)

-- (c) iap
SELECT 'лишние'[@tt по сравнению с @t],x,y
FROM @tt
WHERE NOT EXISTS(SELECT x,y INTERSECT SELECT x,y FROM @t)
UNION ALL
SELECT 'недостающие',x,y
FROM @t
WHERE NOT EXISTS(SELECT x,y INTERSECT SELECT x,y FROM @tt);
5 дек 11, 10:26    [11705048]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить