UNION
2 つの結果を結合して重複を削除しますが、UNION ALL
重複は削除しません。
UNION
また、最終出力をソートします。
UNION ALL
重複がなく、並べ替えもされていないものが欲しいのですが、それは可能ですか?
その理由は、最初のクエリの結果を最終結果の上に表示し、2 番目のクエリの結果を一番下に表示したいからです (それぞれが個別に実行されたかのように並べ替えられます)。
ベストアンサー1
この質問は多くの閲覧数を獲得していることに気づいたので、まずはあなたが抱いている疑問に答えたいと思います。しなかった聞く!
タイトルについて。「Sql Union All」を実現するにはと「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