我有两个表,它们相当大(大约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
答案 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