Als u een query uitvoert in SQL Server en u krijgt de volgende foutmelding...
Msg 104, Level 16, State 1, Line 8
ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
... je moet je SQL-statement controleren - je hebt waarschijnlijk een kolom weggelaten uit je SELECT
lijst.
Zoals de foutmelding aangeeft, ziet u deze fout waarschijnlijk alleen als u een zoekopdracht uitvoert die een UNION
bevat , INTERSECT
of EXCEPT
telefoniste.
Gewoon de kolom toevoegen aan uw SELECT
lijst zou het probleem moeten oplossen.
Voorbeeld
Hier is een voorbeeld van het genereren van de fout.
SELECT
CatName
FROM Cats
UNION ALL
SELECT
DogName
FROM Dogs
ORDER BY CatId;
Resultaat:
Msg 104, Level 16, State 1, Line 8 ORDER BY items must appear in the select list if the statement contains a UNION, INTERSECT or EXCEPT operator.
Het probleem hier is dat ik probeer te bestellen met de CatId
kolom, maar ik selecteer die kolom niet echt in mijn SELECT
lijst.
De gemakkelijkste manier om dit op te lossen is door die kolom toe te voegen aan mijn SELECT
lijst.
SELECT
CatId AS PetID,
CatName AS PetName
FROM Cats
UNION ALL
SELECT
DogId AS PetID,
DogName AS PetName
FROM Dogs
ORDER BY PetId;
Resultaat:
+---------+-----------+ | PetID | PetName | |---------+-----------| | 1 | Brush | | 1 | Yelp | | 2 | Scarcat | | 2 | Woofer | | 3 | Flutter | +---------+-----------+
In mijn geval selecteer ik eigenlijk kolommen met verschillende namen (CatId
vs DogId
, CatName
vs DogName
), dus besloot ik een alias te gebruiken voor die kolommen (PetId
en PetName
). In dit geval kan ik ORDER BY
de aliasnaam (PetId
).