exemplu-diferite nume de câmpuri
nu este necesar ca coloanele corespunzătoare din fiecare instrucțiune SELECT să aibă același nume, dar trebuie să fie aceleași tipuri de date corespunzătoare.
când nu aveți aceleași nume de coloane între instrucțiunile selectate, devine un pic dificil, mai ales când doriți să comandați rezultatele interogării folosind clauza comandă după.
să ne uităm la modul de utilizare a operatorului UNION ALL cu diferite nume de coloane și să ordonăm rezultatele interogării.,
De exemplu:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
În această SQL UNIUNEA TOATE exemplu, de la coloana nume sunt diferite între cele două SELECTAȚI declarații, este mai avantajoasă pentru referire la coloane în clauza ORDER BY, prin poziția lor în setul de rezultate. În acest exemplu, am rezolvat-rezultatele de supplier_id / company_id în ordine crescătoare, ca notată cu ORDER BY 1
. Câmpurile supplier_id / company_id sunt în poziția #1 în setul de rezultate.
acum, să explorăm acest exemplu în continuare cu date.,rezultate:
supplier_id | supplier_name |
---|---|
3000 | Mere |
3000 | Mere |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
în Primul rând, observați că înregistrarea cu supplier_id de 3000 apare de două ori în setul de rezultate, deoarece UNIUNEA TOATE interogare returnează toate rândurile și nu elimina duplicatele.,
În al doilea rând, observați că titlurile coloanelor din setul de rezultate se numesc supplier_id și supplier_name. Acest lucru se datorează faptului că acestea au fost numele coloanelor utilizate în prima instrucțiune SELECT din UNION ALL.
Dacă ai fi vrut, ai fi putut alias coloane, după cum urmează:
SELECT supplier_id AS ID_Value, supplier_name AS Name_ValueFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id AS ID_Value, company_name AS Name_ValueFROM companiesWHERE company_id > 1000ORDER BY 1;
Acum titlurile de coloană în rezultatul va fi alias ca ID_Value pentru prima coloană și Name_Value pentru cea de-a doua coloană.,
ID_Value | Name_Value |
---|---|
3000 | Apple |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
Leave a Reply