代码之家  ›  专栏  ›  技术社区  ›  Mike

有没有一种快速的方法来比较SQL中两个格式相同的表?

  •  4
  • Mike  · 技术社区  · 14 年前

    select * 
    from table_1, table_2
    where 
    table_1.key = table_2.key
    and (
     table_1.col1 != table_2.col1 OR
     table_1.col2 != table_2.col2 OR
     ...
    
    )
    

    但这将是乏味的,因为有一个巨大的和潜在的可变数量的列。

    编辑

    3 回复  |  直到 7 年前
        1
  •  3
  •   Abe Miessler    14 年前

    不确定您使用的数据库类型,但如果您使用的是SQL Server 2005或更高版本,请尝试以下操作:

    select 'table1' as tblName, *  from
      (select * from table1
       except
       select * from table2) x
    union all
    select 'table2' as tblName, *  from
      (select * from table2
       except select * 
       from table1) x
    
        2
  •  1
  •   Gourav C    14 年前

    这是怎么回事。。

    select * from table1 where not exists (select * from table2)
    union all
    select * from table2 where not exists (select * from table1)
    
        3
  •  0
  •   Luigi Rubino    7 年前

    已通过SQL Server验证:

    (select * from table1 except select * from table2)
        union
    (select * from table2 except select * from table1);
    

    经Oracle验证:

    (select * from table1 minus (select * from table2))
        union
    (select * from table2 minus (select * from table1))