小编典典

如何在不排序的情况下执行UNION?(SQL)

sql

UNION加入两个结果并删除重复项,而UNION ALL不会删除重复项。
UNION还对最终输出进行排序。

我想要的是UNION ALL没有重复和没有排序。那可能吗?

这样做的原因是,我希望第一个查询的结果在最终结果的顶部,第二个查询的结果在底部(并且每个查询的排序方式都好像它们在单独运行一样)。


阅读 386

收藏
2021-04-15

共1个答案

小编典典

我注意到这个问题有很多见解,因此我将首先解决您 没有 提出的问题!

关于标题。要实现“ 带有 ‘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
2021-04-15