更正下,上面的 "市场类型" >> "产品类型"上面的是DB2的,下面的是SQL SERVER的SELECT * FROM 表1 WHERE NOT EXISTS(SELECT * FROM 表2 WHERE 表2.市场名称=表1.市场名称 and 表2.产品类型=表1.产品类型)
if not object_id('表1') is null drop table tab1 Go Create table 表1 ([市场名称] varchar(50),[产品名称] varchar(50),[产品价格] int) Insert 表1 select 'A','产品1',22 union all select 'A','产品2',10 union all select 'A','产品3',6 union all select 'B','产品2',10 union all select 'B','产品1',22 Goif not object_id('表2') is null drop table tab1 Go Create table 表2 ([市场名称] varchar(50),[产品名称] varchar(50),[送货日期] smalldatetime) Insert 表2 select 'A','产品2','2009-04-03' Goselect a.* from 表1 a left join 表2 b on a.市场名称 = b.市场名称 and a.产品名称 = b.产品名称 and b.送货日期 = '2009-04-03' where b.市场名称 is null
数据量大的话建议不要用 NOT IN 来查询
再次更正 SELECT * FROM 表1 WHERE NO TEXISTS(SELECT * FROM 表2 WHERE 表2.市场名称 = 表1.市场名称 AND 表2.产品类型 = 表1.产品类型 AND 表2.送货日期 = '2009-04-03')
if not object_id('表1') is null
drop table tab1
Go
Create table 表1 ([市场名称] varchar(50),[产品名称] varchar(50),[产品价格] int)
Insert 表1
select 'A','产品1',22 union all
select 'A','产品2',10 union all
select 'A','产品3',6 union all
select 'B','产品2',10 union all
select 'B','产品1',22
Goif not object_id('表2') is null
drop table tab1
Go
Create table 表2 ([市场名称] varchar(50),[产品名称] varchar(50),[送货日期] smalldatetime)
Insert 表2
select 'A','产品2','2009-04-03'
Goselect a.* from 表1 a left join 表2 b on a.市场名称 = b.市场名称 and a.产品名称 = b.产品名称 and b.送货日期 = '2009-04-03'
where b.市场名称 is null