Articles

SQL: UNION-Operatoren


Eksempel – Ulike Felt for Navn

Det er ikke nødvendig at tilsvarende kolonner i hver SELECT-setning har samme navn, men de trenger ikke å være de samme tilsvarende data typer.

Når du ikke har den samme kolonnen navn mellom de VELGER uttalelser, det blir litt vanskelig, spesielt når du ønsker å bestille resultatene av spørringen ved hjelp av REKKEFØLGEN AV klausulen.

La oss se på hvordan du bruker UNION-operatoren sammen med annen kolonne navn og bestille søkeresultater.,

For eksempel slik:

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

I denne SQL UNION eksempel, siden kolonne navnene er forskjellige mellom de to uttalelsene, det er mer fordelaktig å referere til kolonner i den REKKEFØLGEN AV punkt av sin posisjon i resultatsettet. I dette eksemplet har vi sortert resultatene av supplier_id / company_id i stigende rekkefølge, som er merket med ORDER BY 1. Den supplier_id / company_id feltene er i posisjon #1 i resultatsettet.

Nå, la oss utforske dette eksempelet videre med data.,p>

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

vil Du få følgende resultater:

supplier_id supplier_name
3000 Apple
4000 Samsung
7000 Sony
8000 IBM

Først, legg merke til at oppføringen med supplier_id av 3000 vises bare en gang i resultatsettet fordi UNION spørring fjernet dupliserte oppføringer.,

Andre, legg merke til at kolonneoverskriftene i resultatsettet er kalt supplier_id og supplier_name. Dette er fordi disse var i kolonnen navn brukt i den første SELECT-setning i UNIONEN.

Hvis du hadde villet, kunne du ha aliased kolonnene som følger:

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;

Nå kolonneoverskriftene i resultatet vil bli aliased som ID_Value for den første kolonnen, og Name_Value for den andre kolonnen.,

ID_Value Name_Value
3000 Apple
4000 Samsung
7000 Sony
8000 IBM