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

标签 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 系统。

最佳答案

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

关于sql - 有没有一种快速的方法来比较 SQL 中两个格式相同的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3085703/

相关文章:

MySQL:如何在 mysql 命令行中导入 sql 转储?

具有复杂查询匹配模式的 MySQL vs PostgreSQL 性能

sql - MySQL计数问题

php - 仅当字符串不为空时才执行查询

tsql - 将 TSQLMonitor 与使用新 ODBC dbExpress 驱动程序的 TSQLConnection 一起使用是否有技巧?

sql - 每天的数据差异

sql - 如何合并结果中的两行而不是所有结果?

mysql - 将行与同一表中的另一行进行比较

python - 比较泛型类型对象的类型

function - 比较haskell中的函数和参数