这个问题在社区提出过,不过我看不到回复,请高手指点。
例如:找a表和b表中不同的记录   
  表a:   
  CATALOG_ID   COST PAY_MEM     COST_DATE COST_DESC     MEM_NUMBER   
  2       12 1001 3   
  1       12 1000 1   
  表b:   
  CATALOG_ID   COST PAY_MEM     COST_DATE COST_DESC     MEM_NUMBER   
  1       12 1001 3   
  2       12 1000 1   
  希望得到的结果:   
  CATALOG_ID   COST PAY_MEM     COST_DATE COST_DESC     MEM_NUMBER   
  2       12 1001 3   
  1       12 1000 1   
  请问如何写SQL语句?

解决方案 »

  1.   

    if object_id('A') is not null drop table A
    select 2 as CATALOG_ID, 12 as [COST PAY_MEM], 1001 as [COST_DATE COST_DESC], 3 as MEM_NUMBER
    into A
    union select 1, 12, 1000, 1
    if object_id('B') is not null drop table B
    select 1 as CATALOG_ID, 12 as [COST PAY_MEM], 1001 as [COST_DATE COST_DESC], 3 as MEM_NUMBER
    into B
    union select 2, 12, 1000, 1
    ----------------------------------------------------------------------
    select A.*
    from A left join B on A.CATALOG_ID = B.CATALOG_ID and A.[COST PAY_MEM] = B.[COST PAY_MEM] 
        and A.[COST_DATE COST_DESC] = B.[COST_DATE COST_DESC] and A.MEM_NUMBER = B.MEM_NUMBER
    where B.CATALOG_ID is null
    /*
    CATALOG_ID  COST PAY_MEM COST_DATE COST_DESC MEM_NUMBER  
    ----------- ------------ ------------------- ----------- 
    1           12           1000                1
    2           12           1001                3
    */
    ----------------------------------------------------------------------
    drop table A
    drop table B
      

  2.   

    select a.*
    from tableA a left 
    join tableB b on a.col1 = b.col1 and a.col2 = b.col2 ...... --全部字段相同
    where b.col1 is null
      

  3.   

    select a.*
    from tableA a
    left join tableB b on a.col1 = b.col1 and a.col2 = b.col2 ...... --全部字段相同
    where b.col1 is null