LoginSignup
0
1

More than 5 years have passed since last update.

複数の検索結果を統合する(和集合)

Last updated at Posted at 2016-11-23

はじめに

テーブルに対し縦方向(行)に作用する集合演算子と、横方向(列)に作用する結合を覚えることで、複数のテーブルに分散しているデータを組み合わせて望む結果を選択することが出来るようになります。

集合演算とは

片方のテーブルだけにあるレコードを集めた結果などを得ることが出来ます。そして、このような集合演算を行なうための演算子を「集合演算子」

テーブルの足し算 UNION

最初に紹介する集合演算子は、レコードの足し算を行なう UNION(和)です。以下に構文を示します。

UNION に限らず集合演算子は、通常は重複行が排除されます。
縦に結合されます。以下は例です。

従業員

従業員コード 従業員名
A0001 チャーリー
A0002 ペパーミント

受給者

受給者コード 受給者名
A0001 チャーリー
B0001 スヌーピー
B0002 ウッドストック

SQL

SELECT * FROM 従業員
UNION
SELECT * FROM 受給者

結果

従業員コード 従業員名
A0001 チャーリー
A0002 ペパーミント
B0001 スヌーピー
B0002 ウッドストック

集合演算の注意事項

  • 演算対象となるレコードの列数は同じであること 例えば、片方の列数が 2 列なのに、片方が 3 列という足し算を行なうことは出来ません。
  • 足し算の対象となるレコードの列のデータ型が一致していること。左から数えて同じ位置にある列は、同じデータ型である必要があります。また、どうしても 違うデータ型の列を使いたい場合は、型変換の関数 CAST を使うことで集合演算子を使用が可能になります。
  • ORDER BY 句は 1 つだけUNION で足せる SELECT 文は、どんなものでもかまいません。これまでに学んだ WHERE、GROUP BY、HAVING といった句を使うことも出来ます。ただし、ORDER BY 句だけは、全体として 1 つを最後につけられるだけです。

重複行を残す集合演算 ALL オプション

ALL オプションは UNION の後ろに「ALL」というキーワードを追加

SELECT * FROM 従業員
UNION ALL
SELECT * FROM 受給者
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1