Articles

SQL: UNION Operator (Română)


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 Uniunii cu diferite nume de coloane și să ordonăm rezultatele interogării.,

De exemplu:

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

În această SQL UNIUNII 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.,p>

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

Veți obține următoarele rezultate:

supplier_id supplier_name
3000 Mere
4000 Samsung
7000 Sony
8000 IBM

în Primul rând, observați că înregistrarea cu supplier_id de 3000 apare numai o dată în setul de rezultate, deoarece UNIUNEA interogare eliminat intrări duplicat.,

Î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 Uniune.

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 > 2000UNIONSELECT 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
4000 Samsung
7000 Sony
8000 IBM