Tab1              Tab2
-----------       -------------
[船籍港]          [DQMC]泰州              泰州 
六安              六安
泰州              淮安
周口
六安
六安
泰州
宣城
泰州
淮安select [船籍港] from Tab1 t where not exists(select 1 from Tab2 where DQMC=t.[船籍港])
上述程序为什么查询出来的结果不是下面的:[船籍港]
------------
周口
宣城而还是[船籍港]
------------
泰州              
六安              
泰州              
周口
六安
六安
泰州
宣城
泰州
淮安非常纠结,请给为大虾指点!
Tab1中[船籍港]字段为nvarchar(255)
Tab2中[DQMC]字段为nvarchar(50)

解决方案 »

  1.   

    -------------------------------------
    --  Author : liangCK 梁爱兰
    --  Comment: 小梁 爱 兰儿
    --  Date   : 2009-11-26 15:59:00
    -------------------------------------
     
    --> 生成测试数据: @Tab1
    DECLARE @Tab1 TABLE (船籍港 varchar(4))
    INSERT INTO @Tab1
    SELECT '泰州' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '泰州' UNION ALL
    SELECT '周口' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '泰州' UNION ALL
    SELECT '宣城' UNION ALL
    SELECT '泰州' UNION ALL
    SELECT '淮安'
     
    --> 生成测试数据: @Tab2
    DECLARE @Tab2 TABLE (DQMC varchar(4))
    INSERT INTO @Tab2
    SELECT '泰州' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '淮安'--SQL查询如下:select [船籍港] from @Tab1 t where not exists(select 1 from @Tab2 where DQMC=t.[船籍港]) /*
    船籍港
    ----
    周口
    宣城(2 行受影响)
    */
      

  2.   

    --> 测试数据: @Tab1
    declare @Tab1 table ([船籍港] nvarchar(62))
    insert into @Tab1
    select N'泰州' union all
    select N'六安' union all
    select N'泰州' union all
    select N'周口' union all
    select N'六安' union all
    select N'六安' union all
    select N'泰州' union all
    select N'宣城' union all
    select N'泰州' union all
    select N'淮安'  
     
    declare @Tab2 table ([DQMC] nvarchar(62))
    insert into @Tab2
    select N'泰州' union all
    select N'六安' union all
    select N'淮安'--select * from @Tab1select [船籍港] from @Tab1 t where not exists(select 1 from @Tab2 where DQMC=t.[船籍港])
    船籍港
    --------------------------------------------------------------
    周口
    宣城(2 行受影响)
    我的是好的
      

  3.   

    看不懂.select [船籍港] from Tab1 t where not exists(select 1 from Tab2 where DQMC=t.[船籍港]) -->select m.[船籍港],n.* from Tab1 m, tabl2 n
    where n.DQMC=m.[船籍港]
      

  4.   

    看懂了,用not in即可.DECLARE @Tab1 TABLE (船籍港 varchar(4))
    INSERT INTO @Tab1
    SELECT '泰州' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '泰州' UNION ALL
    SELECT '周口' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '泰州' UNION ALL
    SELECT '宣城' UNION ALL
    SELECT '泰州' UNION ALL
    SELECT '淮安'
     
    --> 生成测试数据: @Tab2
    DECLARE @Tab2 TABLE (DQMC varchar(4))
    INSERT INTO @Tab2
    SELECT '泰州' UNION ALL
    SELECT '六安' UNION ALL
    SELECT '淮安'select m.* from @tab1 m where 船籍港 not in (select distinct DQMC from @tab2)/*
    船籍港  
    ---- 
    周口
    宣城(所影响的行数为 2 行)
    */
      

  5.   

    create table #Tab1
    (vname varchar(255))create table #Tab2
    (vname varchar(50))
    insert into #Tab1
    select '泰州'
    union all
    select '六安'
    union all
    select '六安'
    union all
    select '六安'
    union all
    select '宣城'
    union all
    select '泰州'
    union all
    select '泰州'
    union all
    select '周口'insert into #Tab2
    select '泰州'
    union all
    select '六安'select * from #Tab1 as t
    where not exists(select 1 from #Tab2 where vname=t.vname)