Wenn Sie eine Abfrage in SQL Server ausführen und die folgende Fehlermeldung erhalten…
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.
…Sie sollten Ihre SQL-Anweisung überprüfen – Sie haben wahrscheinlich eine Spalte in Ihrem SELECT
ausgelassen aufführen.
Wie die Fehlermeldung andeutet, sehen Sie diesen Fehler wahrscheinlich nur, wenn Sie eine Abfrage ausführen, die einen UNION
enthält , INTERSECT
oder EXCEPT
Betreiber.
Fügen Sie einfach die Spalte zu Ihrem SELECT
hinzu Liste sollte das Problem beheben.
Beispiel
Hier ist ein Beispiel für die Erzeugung des Fehlers.
SELECT
CatName
FROM Cats
UNION ALL
SELECT
DogName
FROM Dogs
ORDER BY CatId;
Ergebnis:
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.
Das Problem hier ist, dass ich versuche, nach der CatId
zu bestellen Spalte, aber ich wähle diese Spalte nicht wirklich in meinem SELECT
aus Liste.
Der einfachste Weg, dies zu beheben, besteht darin, diese Spalte zu meinem SELECT
hinzuzufügen Liste.
SELECT
CatId AS PetID,
CatName AS PetName
FROM Cats
UNION ALL
SELECT
DogId AS PetID,
DogName AS PetName
FROM Dogs
ORDER BY PetId;
Ergebnis:
+---------+-----------+ | PetID | PetName | |---------+-----------| | 1 | Brush | | 1 | Yelp | | 2 | Scarcat | | 2 | Woofer | | 3 | Flutter | +---------+-----------+
Tatsächlich wähle ich in meinem Fall Spalten mit unterschiedlichen Namen aus (CatId
vs DogId
, CatName
vs. DogName
), also habe ich mich entschieden, einen Alias für diese Spalten zu verwenden (PetId
und PetName
). In diesem Fall kann ich ORDER BY
wählen der Aliasname (PetId
).