Articles

SQL: UNION Operator


Voorbeeld – verschillende veldnamen

Het is niet nodig dat de overeenkomstige 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-operator met verschillende kolomnamen kunnen gebruiken en de resultaten van de query kunnen ordenen.,

bijvoorbeeld:

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

in dit SQL UNION 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.,p>

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

zou Je de volgende resultaten:

supplier_id supplier_name
3000 Apple
4000 Samsung
7000 Sony
8000 IBM

ten Eerste, merk op dat het record met supplier_id van 3000 verschijnt slechts eenmaal in de resultaten omdat de UNION-query worden verwijderd dubbele vermeldingen.,

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 Unie 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 > 2000UNIONSELECT 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
4000 Samsung
7000 Sony
8000 IBM