Voorbeeld – verschillende veldnamen
Het is niet nodig dat de corresponderende kolommen in elk SELECT statement dezelfde naam hebben, maar ze moeten wel dezelfde overeenkomstige gegevenstypen zijn.
wanneer u niet dezelfde kolomnamen hebt tussen de SELECT statements, wordt het een beetje lastig, vooral wanneer u de resultaten van de query wilt ordenen met behulp van de ORDER BY-clausule.
laten we eens kijken hoe we de UNION ALL-operator met verschillende kolomnamen kunnen gebruiken en de resultaten van de query kunnen ordenen.,
bijvoorbeeld:
SELECT supplier_id, supplier_nameFROM suppliersWHERE supplier_id > 2000UNION ALLSELECT company_id, company_nameFROM companiesWHERE company_id > 1000ORDER BY 1;
in dit SQL Unie alle voorbeeld, omdat de kolomnamen verschillen tussen de twee SELECT statements, is het voordeliger om de kolommen in de volgorde van clausule te verwijzen naar hun positie in de resultatenreeks. In dit voorbeeld hebben we de resultaten gesorteerd op supplier_id / company_id in oplopende volgorde, zoals aangegeven door de ORDER BY 1
. De velden supplier_id / company_id bevinden zich in positie #1 in de resultaatset.
laten we dit voorbeeld nu verder onderzoeken met data.,resultaten:
supplier_id | supplier_name |
---|---|
3000 | Apple |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
ten Eerste, let op dat de record met supplier_id van 3000 komt twee keer voor in de resultaten, omdat de UNIE ALLE query retourneert alle rijen en geen duplicaten verwijderen.,
ten tweede, merk op dat de kolomkoppen in de resultatenreeks supplier_id en supplier_name worden genoemd. Dit komt omdat dit de kolomnamen waren die in het eerste SELECT-statement in de UNION ALL werden gebruikt.
Als u dat had gewild, had u de kolommen als volgt kunnen aliased:
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;
nu zullen de kolomkoppen in het resultaat worden aliased als ID_Value voor de eerste kolom en Name_Value voor de tweede kolom.,
ID_Value | Name_Value |
---|---|
3000 | Apple |
3000 | Apple |
4000 | Samsung |
7000 | Sony |
8000 | IBM |
Leave a Reply