UNION加入两个结果并删除重复项,而UNION ALL不会删除重复项。 UNION还对最终输出进行排序。
UNION
UNION ALL
我想要的是UNION ALL没有重复和没有排序。那可能吗?
这样做的原因是,我希望第一个查询的结果在最终结果的顶部,第二个查询的结果在底部(并且每个查询的排序方式都好像它们在单独运行一样)。
我注意到这个问题有很多见解,因此我将首先解决您 没有 提出的问题!
关于标题。要实现“ 带有 ‘istinct’的Sql Union All ”,只需将其替换UNION ALL为即可UNION。这具有删除重复项的作用。
对于您的特定问题,给出的澄清是“第一个查询应具有“优先级”,因此应从底部删除重复项”,您可以使用
SELECT col1, col2, MIN(grp) AS source_group FROM (SELECT 1 AS grp, col1, col2 FROM t1 UNION ALL SELECT 2 AS grp, col1, col2 FROM t2) AS t GROUP BY col1, col2 ORDER BY MIN(grp), col1