Articles

SQL:UNION Operator

例-異なるフィールド名

各SELECTステートメントの対応する列の名前は同じである必要はありませんが、対応するデータ型は同じであ

SELECTステートメントの間に同じ列名がない場合、特にORDER BY句を使用してクエリの結果を並べ替える場合は、少し難しくなります。

さまざまな列名でUNION演算子を使用し、クエリ結果を並べ替える方法を見てみましょう。,

たとえば、次のようになります。

SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;

このSQL UNIONの例では、列名はSELECTステートメント間で異なるため、ORDER BY句の列を結果セット内の位置によって参照する方が この例では、ORDER BY 1で示されるように、結果をsupplier_id/company_idで昇順にソートしました。 Supplier_id/company_idフィールドは、結果セットの位置#1にあります。

さて、この例をさらにデータで調べてみましょう。,p>

SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;

次の結果が得られます。

supplier_id supplier_name
3000 アップル
4000 サムスン
7000 ソニー
8000 ibm

まず、supplier_idが3000のレコードは、unionクエリで重複エントリが削除されたため、結果セットに一度だけ表示されることに注意してください。,

次に、結果セット内の列見出しがsupplier_idおよびsupplier_nameと呼ばれていることに注意してください。 これは、これらがUNIONの最初のSELECTステートメントで使用された列名であったためです。

必要に応じて、次のように列の別名を付けることができます。

SELECT supplier_id AS ID_Value, supplier_name AS Name_ValueFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id AS ID_Value, company_name AS Name_ValueFROM companiesWHERE company_id > 1000ORDER BY 1;

結果の列見出しは、最初の列のID_Valueとして、二番目の列のName_Valueとしてエイリアスされます。,

ID_Value Name_Value
3000 Apple
4000 Samsung
7000 Sony
8000 IBM