Ниже приведен пример использования LEFT OUTER JOIN
:
declare @table1 table (username varchar(10), product varchar(10), shippeddate datetime)
declare @table2 table (username varchar(10), product varchar(10), shippeddate datetime)
insert into @table1
select 'Muha','car1','2014-08-15' union
select 'Steve','car2','2014-08-12'
insert into @table2
select 'Muha','car1',null
insert into @table1
select t2.*
from @table2 t2
left outer join @table1 t1
on isnull(t1.username,'') = isnull(t2.username,'')
and isnull(t1.product,'') = isnull(t2.product,'')
and t1.shippeddate = t2.shippeddate
where t1.username is null
select * from @table1
Вот второй пример использования NOT EXISTS
.
declare @table1 table (username varchar(10), product varchar(10), shippeddate datetime)
declare @table2 table (username varchar(10), product varchar(10), shippeddate datetime)
insert into @table1
select 'Muha','car1','2014-08-15' union
select 'Steve','car2','2014-08-12'
insert into @table2
select 'Muha','car1',null
insert into @table1
select t2.*
from @table2 t2
where not exists (select * from @table1 t1 where isnull(t1.username,'')=isnull(t2.username,'') and isnull(t1.product,'')=isnull(t2.product,'') and t1.shippeddate=t2.shippeddate)
select * from @table1
В обоих случаях вы должны быть осведомлены о NULL значений, так как они не оценивают как равные с использованием =
. Я оставил сравнение даты без нулевого обработчика намеренно в обоих сценариях - вам нужно будет решить на основе ваших бизнес-правил, как их следует лечить.
Как узнать, какие строки из этих таблиц можно сравнить? Есть общий столбец или что-то еще? –
На самом деле есть текстовый файл, содержащий все данные таблицы, я могу вставить весь файл в таблицу, но мне нужно сравнить существующие записи и вставить разные строки, исходящие из текстового файла. – Muhabutti
Confused - что именно вы пытаетесь делать?? Вы хотите импортировать текстовый файл во временную таблицу и сравнить с таблицей «Таблица1» и вставить те строки, которые еще не существуют в «Таблице1»? Ваш вопрос сказал что-то о * вставьте разные строки в другую таблицу * - что теперь? –