Mar*_*ith 50
我注意到这个问题得到了很多观点,所以我首先要提出一个你没有问过的问题!
关于标题.要实现"Sql Union All with "distinct"",那么只需替换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
Run Code Online (Sandbox Code Playgroud)
Dam*_*ver 10
"UNION也对最终输出进行排序" - 仅作为实现工件.这是没有办法保证执行排序,如果你需要一个特定的排列顺序,你应该以指定它ORDER BY的条款.否则,输出顺序是服务器提供的最方便的输出顺序.
因此,您对执行UNION ALL但删除重复项的函数的请求很容易 - 它被调用UNION.
从您的澄清中,您似乎也相信a UNION ALL将在后续查询的结果之前返回第一个查询的所有结果.这也不能保证.同样,实现特定订单的唯一方法是使用ORDER BY子句指定它.
| 归档时间: |
|
| 查看次数: |
115224 次 |
| 最近记录: |