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

Откуда: Москва
Сообщений: 1139
День добрый,

есть 2 таблицы:
CREATE TABLE [dbo].[tbl_First](
	[Row id] [int] NOT NULL,
	[Col 1] [nvarchar](50) NULL,
	[Col 2] [nvarchar](50) NULL,
	[Col 3] [nvarchar](50) NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[tbl_Second](
	[Row id] [int] NOT NULL,
	[Col 1] [nvarchar](50) NULL,
	[Col 2] [nvarchar](50) NULL,
	[Col 3] [nvarchar](50) NULL
) ON [PRIMARY]
Задачка - выбрать данные из второй таблицы, где комбинация [Col 1] + [Col 2] + [Col 3] не встречается в первой табличке.

С одним столбцом все ясно:
SELECT * FROM tbl_Second WHERE (NOT ([Col1] IN (SELECT [Col 1] from tbl_First)))
А как такое с тремя столбцами провернуть?

Спасибо.
31 мар 13, 12:31    [14118253]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить 2 таблицы по нескольким полям  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
SELECT * FROM tbl_Second a WHERE not exists (SELECT * from tbl_First b where a.col1 = b.col1 and a.col2 = b.col2 and a.col3 = b.col3)
31 мар 13, 12:37    [14118261]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить 2 таблицы по нескольким полям  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
Гавриленко Сергей Алексеевич,

То, что надо.
Спасибо.
31 мар 13, 12:43    [14118273]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить 2 таблицы по нескольким полям  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Гавриленко Сергей Алексеевич
SELECT * FROM tbl_Second a WHERE not exists (SELECT * from tbl_First b where a.col1 = b.col1 and a.col2 = b.col2 and a.col3 = b.col3)
Все поля допускают NULL, однако!
Вопрос: надо ли считать, что NULL=NULL или нет?
31 мар 13, 16:23    [14118624]     Ответить | Цитировать Сообщить модератору
 Re: Сравнить 2 таблицы по нескольким полям  [new]
aleks2
Guest
iap
Гавриленко Сергей Алексеевич
SELECT * FROM tbl_Second a WHERE not exists (SELECT * from tbl_First b where a.col1 = b.col1 and a.col2 = b.col2 and a.col3 = b.col3)
Все поля допускают NULL, однако!
Вопрос: надо ли считать, что NULL=NULL или нет?

EXCEPT
и
INTERSECT

считаю вполне определенно

declare @x table(i int)
declare @y table(i int)

insert @x
  values( null )
        , ( 1 )
        , ( 2 )
        , ( 3 )

insert @y
  values( null )
        , ( 1 )
        , ( 2 )
        , ( 4 )
		
select * from @x
except
select * from @y

select * from @x
intersect
select * from @y
31 мар 13, 17:31    [14118743]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить