Esempio – Nomi di campi diversi
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 ALL con nomi di colonne diversi e ordinare i risultati della query.,
Ad esempio:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
In questo esempio SQL UNION ALL, poiché i nomi delle colonne sono diversi tra le due istruzioni SELECT, è più vantaggioso fare riferimento alle colonne nella clausola ORDER BY per la 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.,risultati:
supplier_id | supplier_name |
---|---|
3000 | Apple |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
in Primo luogo, si noti che il record con supplier_id di 3000 appare due volte nel set di risultati, perché l’UNIONE di TUTTE le query restituisce tutte le righe e non rimuovere i duplicati.,
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 ALL.
Se avessi voluto, avresti potuto alias le colonne come segue:
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;
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 |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
Leave a Reply