(select * from query1 EXCEPT select * from query2)
UNION ALL
(select * from query2 EXCEPT select * from query1)
我遇到了上面的查询来解决这个问题。我在 postgres 9.4 上做了一些试验,这是我的结果。
1不支持减号,所以需要使用 EXCEPT
[2] 仅使用 EXCEPT 不考虑重复,因此必须使用 EXCEPT ALL
[3] EXCEPT ALL 要求结果中的列顺序应该相同,因此在上面的查询中QUERY1
应该QUERY2
返回相同的列顺序,或者我们必须包装查询并确保列顺序相同。(这可能发生在应用程序中逻辑)
因此,如果我们牢记以上三点,我们将 100% 确定我们的结果,对吧?
注意:我在问题的答案中也提到了上述 3 点。我已经在这里问过了,所以我可以确定