SELECT * FROM 表1 WHERE 市场名称, 市场类型 NOT IN (SELECT 市场名称, 市场类型 FROM 表2 WHERE 送货日期 = '2009-04-03')

解决方案 »

  1.   

    更正下,上面的 "市场类型" >> "产品类型"上面的是DB2的,下面的是SQL SERVER的SELECT * FROM 表1 WHERE NOT EXISTS(SELECT * FROM 表2 WHERE 表2.市场名称=表1.市场名称 and 表2.产品类型=表1.产品类型)
      

  2.   


    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
      

  3.   

    数据量大的话建议不要用 NOT IN  来查询
      

  4.   

    再次更正  SELECT * FROM 表1 WHERE NO TEXISTS(SELECT * FROM 表2 WHERE 表2.市场名称 = 表1.市场名称 AND 表2.产品类型 = 表1.产品类型 AND 表2.送货日期 = '2009-04-03')