Articles

SQL: Union Operator (Svenska)

exempel – olika fältnamn

det är inte nödvändigt att motsvarande kolumner i varje SELECT-sats har samma namn, men de måste vara samma motsvarande datatyper.

När du inte har samma kolumnnamn mellan select-uttalandena blir det lite knepigt, särskilt när du vill beställa resultaten av frågan med hjälp av ORDER BY-klausulen.

låt oss titta på hur du använder unionsoperatören med olika kolumnnamn och beställa frågeresultaten.,

till exempel:

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

i det här SQL UNION-exemplet, eftersom kolumnnamnen skiljer sig mellan de två SELECT-satserna, är det mer fördelaktigt att referera kolumnerna i ORDER BY-klausulen efter deras position i resultatuppsättningen. I det här exemplet har vi sorterat resultaten efter supplier_id/company_id i stigande ordning, som betecknas med ORDER BY 1. Fälten supplier_id / company_id är i position #1 i resultatuppsättningen.

nu, låt oss utforska detta exempel ytterligare med data.,p>

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

du skulle få följande resultat:

supplier_id supplier_name
3000 Apple
4000 Samsung
7000 Sony
8000 IBM

Observera först att posten med supplier_id på 3000 endast visas en gång i resultatuppsättningen eftersom unionsfrågan tog bort dubblettposter.,

För det andra, Lägg märke till att kolumnrubrikerna i resultatuppsättningen kallas supplier_id och supplier_name. Detta beror på att dessa var kolumnnamnen som användes i den första select-satsen i unionen.

om du hade velat kan du ha aliaserat kolumnerna enligt följande:

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;

nu kommer kolumnrubrikerna i resultatet att aliaseras som ID_Value för den första kolumnen och Name_Value för den andra kolumnen.,

ID_Value Name_Value
3000 Apple
4000 Samsung
7000 Sony
8000 IBM