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 ).