UNIONを使用したテーブル行の結合

UNIONを使用したテーブル行の結合

このレッスンでは、UNION句について説明します。 UNION句を使用すると、二つの異なるクエリのテーブル行を一つの結果に結合できます。 異なるテーブルの列を結合する結合とは異なり、unionは異なるテーブルの行を結合します。 以下は、共用体がどのように見えるかの図です

共用体

このレッスンのすべての例は、Microsoft SQL Server Management StudioおよびAdventureWorks2012データベースに基づいています。, での使用を開始したこれらの無償ツールを使ってガイドをはじめ用のSQLサーバーです。

SQLでは、このステートメントは次のようになります

SELECT columnlistFROM table1UNIONSELECT columnlistFROM table2

二つのテーブルを結合するためには、いくつかの要件があります。

  1. 列の数は、両方のselectステートメントで同じでなければなりません。
  2. 列は、順番に同じデータ型でなければなりません。

行が結合されると、重複する行が削除されます。 両方のselectステートメントの結果からすべての行を保持する場合は、ALLキーワードを使用します。,

Examples

Union two tables

AdventureWorks2012のすべての製品カテゴリとサブカテゴリのリストを提供するように求められたとします。

SELECT C.NameFROM Production.ProductCategory AS CUNION ALLSELECT S.NameFROM Production.ProductSubcategory AS S

これから、名前の組み合わせリストを取得しますが、どの名前がカテゴリとサブカテゴリであるかを知りたいとします。, これを行うには、カテゴリタイプを示す新しい列を追加します。

SELECT 'category', C.NameFROM Production.ProductCategory AS CUNION ALLSELECT 'subcategory', S.NameFROM Production.ProductSubcategory AS S

Union versus Union All

UNIONとUNION ALLの違いは、UNIONを使用するとunionの結果から一意の行セットが返されることです。UNION ALLはすべての行を返します。

例:

SELECT person.Address.CityFROM person.Address

は19614行を返します。

SELECT person.Address.CityFROM person.AddressUNIONSELECT person.Address.CityFROM person.Address

は、テーブル内の個別の都市名の数である575行を返します。 UNION Allを実行すると、都市名のセット全体が二度返されます。

SELECT person.Address.CityFROM person.AddressUNION ALLSELECT person.Address.CityFROM person.Address

39228行が返されます。,

ご覧のとおり、ALL修飾子を使用することとは大きな違いがあります。 使用しない場合、結果は個別の値になります。 重複は、各結果の行間だけでなく、内部からも削除されます。

Union three tables

管理がソースによって識別されるユーザー、ベンダー、およびストア名の組み合わせリストを必要とするとします。

これを行うには、三つの別々のクエリを作成し、union句を使用してそれらをまとめます。 その後、リストを注文します。,

一見すると、ORDER BY句は最後のselect文にのみ適用されると思うかもしれませんが、実際にはunionによって返されたすべての結果に適用されます。 データベースエンジ

処理順序について疑問がある場合は、括弧”()”を使用して、式と同様に評価の順序を制御できます。 ここでは、一般的に、括弧でどのように見えるかです:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ツールバーへスキップ