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

时间:2010-06-21 14:50:52

标签: sql tsql compare

我想创建一个SQL查询来比较具有相同列的两个表,包括名称和类型。每个表都有一个唯一的密钥。我希望查询返回包含不相等值的任何行。我知道可以做这样的事情

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
 ...

)

但这会很繁琐,因为列数很大且可能可变。

修改

如果有帮助,我正在使用tsql系统。

3 个答案:

答案 0 :(得分:3)

不确定您使用的是哪种类型的数据库,但如果您使用的是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

答案 1 :(得分:1)

怎么这个..

select * from table1 where not exists (select * from table2)
union all
select * from table2 where not exists (select * from table1)

答案 2 :(得分:0)

使用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))