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 |