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 |