今回はUNIONを紹介します。
UNION
簡単に言うと、行結合です。
2つのテーブルを行方向に結合してあげるためにUNIONを使います。
ためしに、Person.PersonテーブルのLastNameを結合してみます。
ただし、WHERE句でPersonTypeを抽出条件として指定しています。
SELECT LastName FROM Person.Person WHERE PersonType = 'EM' UNION SELECT LastName FROM Person.Person WHERE PersonType = 'IN'
570件のデータが確認されます。
実は、UNION とだけ指定すると、重複する行は削除されてユニークな値のみが出力されるのです。
UNION ALL
では、重複削除を行わず単純にテーブルを行結合するにはどうすればよいかというと、UNIONのあとにALLを付けます。
こんなかんじです。
SELECT LastName FROM Person.Person WHERE PersonType = 'EM' UNION ALL SELECT LastName FROM Person.Person WHERE PersonType = 'IN'
18757件と結果が全然違います。
注意
テーブル同士を行結合するのですから、カラム数は一致していなくてはなりません。 例えばこれはエラーになります。
SELECT LastName FROM Person.Person WHERE PersonType = 'EM' UNION ALL SELECT LastName,FirstName FROM Person.Person WHERE PersonType = 'IN'
こんなかんじです。
データ型の違いもダメです。
SELECT LastName FROM Person.Person WHERE PersonType = 'EM' UNION ALL SELECT BusinessEntityID FROM Person.Person WHERE PersonType = 'IN'
エラーになります。
以上、今回はここまで。