SQL: UNION Operator (Italiano)
Example – Different Field Names
Non è necessario che le colonne corrispondenti in ogni istruzione SELECT abbiano lo stesso nome, ma devono essere gli stessi tipi di dati corrispondenti.
Quando non si hanno gli stessi nomi di colonna tra le istruzioni SELECT, diventa un po ‘ complicato, specialmente quando si desidera ordinare i risultati della query utilizzando la clausola ORDER BY.
Diamo un’occhiata a come utilizzare l’operatore UNION con nomi di colonne diversi e ordinare i risultati della query.,
Ad esempio:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
In questo esempio di UNIONE SQL, poiché i nomi delle colonne sono diversi tra le due istruzioni SELECT, è più vantaggioso fare riferimento alle colonne nella clausola ORDER BY in base alla loro posizione nel set di risultati. In questo esempio, abbiamo ordinato i risultati per supplier_id / company_id in ordine crescente, come indicato da ORDER BY 1
. I campi supplier_id / company_id si trovano nella posizione # 1 nel set di risultati.
Ora, esploriamo ulteriormente questo esempio con i dati.,p>
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNIONSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
Si ottengono i seguenti risultati:
supplier_id | supplier_name |
---|---|
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
in Primo luogo, si noti che il record con supplier_id di 3000 appare solo una volta nel set di risultati in quanto la query di UNIONE rimuovere le voci duplicate.,
In secondo luogo, si noti che le intestazioni delle colonne nel set di risultati sono chiamate supplier_id e supplier_name. Questo perché questi erano i nomi delle colonne utilizzati nella prima istruzione SELECT nell’UNIONE.
Se avessi voluto, avresti potuto alias le colonne come segue:
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;
Ora le intestazioni delle colonne nel risultato saranno alias come ID_Value per la prima colonna e Name_Value per la seconda colonna.,
ID_Value | Name_Value |
---|---|
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |