UNION と UNION ALL
CoddyのSQLジャーニー「応用」セクションの一部。レッスン 16/27。
UNIONについては、Fundamentalsで学びました。これは2つの結果セットを積み重ねます。デフォルトでは重複を削除するため、追加のソート処理が必要になります。
SELECT name FROM authors
UNION
SELECT name FROM editorsUNION ALL も同じように積み重ねますが、重複を保持します。2つの側が同じ行を生成できないとわかっている場合や、各出現を実際にカウントしたい場合には、より高速で、ほとんどの場合これが望ましい方法です。
SELECT name FROM authors
UNION ALL
SELECT name FROM editors両方の側で、同じ順序の同じ数の列を返し、互換性のある型でなければなりません。
チャレンジ
簡単利用可能なテーブルと列:
online_orders:order_no、amountretail_orders:ticket_no、total
2つのテーブルは、異なる列名を使用して異なるチャネルの注文を記録しています。次の列を持つ、すべての注文をまとめた1つの一覧を返してください:
channel:'online'または'retail'order_id:online の場合はorder_no、retail の場合はticket_noamount:注文の合計(amountまたはtotalから取得)
すべての行を保持してください(重複排除はしません)。amount の降順で並べ替えてください。
自分で試してみよう
-- 同じ3列に揃えた2つのSELECTをUNION ALLで結合
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
応用のすべてのレッスン
自分で練習してみよう: SQLプレイグラウンド