【发布时间】:2016-04-01 01:34:14
【问题描述】:
(select * from query1 EXCEPT select * from query2)
UNION ALL
(select * from query2 EXCEPT select * from query1)
我遇到了上面的查询来解决这个问题。 我在 postgres 9.4 上做了一些试验,这是我的结果。
1 Minus 不支持,所以需要使用 EXCEPT
[2] 仅使用 EXCEPT 不会考虑重复,因此必须使用 EXCEPT ALL
[3] EXCEPT ALL 要求结果中的列顺序应该相同,因此在上面的查询中 QUERY1 和 QUERY2 应该返回相同的列顺序,或者我们必须包装查询并确保列顺序是一样。(可能是在应用程序逻辑中发生)
所以如果我们牢记以上三点,我们将 100% 确定我们的结果对吗?
注意:我在question的回答中也提到了以上3点。 我已经在这里问过了,所以我可以确定
【问题讨论】:
-
没有主键,这个查询没有意义。如果你真的需要它,为什么不
select * from q1 union select * from q2?
标签: sql postgresql sql-except