使用相同的键查找不同表中的行之间的差异

时间:2015-03-11 05:15:02

标签: sql

我有两个表,它们相当大(大约40列),它们主要由计算结果填充整数值。一个表是最近计算运行的结果,另一个表是历史记录的存储历史计算。两个表都具有相同的主键值。

是否有人知道是否可以根据主键比较这些表的差异? - 还是完全匹配?我意识到我可以比较每一列,但是有40列,这是一个很长的陈述,如果我需要回来后再改变一些东西,很容易出错。

为了举例(只有5列),我可以:

SELECT *
FROM kalk_results
INNER JOIN kalk_history
ON kalk_results.id1 = kalk_history.id1
AND kalk_results.id2 = kalk_history.id2
WHERE kalk_results.result_1 <> kalk_history.result_1
OR kalk_results.result_2 <> kalk_history.result_2
OR kalk_results.result_3 <> kalk_history.result_3
OR kalk_results.result_4 <> kalk_history.result_4
OR kalk_results.result_5 <> kalk_history.result_5

1 个答案:

答案 0 :(得分:1)

要返回两个表中找到的行,请使用INTERSECT

select * from kalk_results
intersect
select * from kalk_history

要从kalk_hisults中返回kalk_history中找不到的行,请使用EXCEPT

select * from kalk_results
except
select * from kalk_history