Ако изпълнявате заявка в SQL Server и получавате следната грешка...
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.
…трябва да проверите своя SQL израз – вероятно сте пропуснали колона от вашия SELECT списък.
Както подсказва съобщението за грешка, вероятно ще видите тази грешка само ако изпълнявате заявка, която съдържа UNION , INTERSECT или EXCEPT оператор.
Просто добавяне на колоната към вашия SELECT списъкът трябва да реши проблема.
Пример
Ето пример за генериране на грешката.
SELECT
CatName
FROM Cats
UNION ALL
SELECT
DogName
FROM Dogs
ORDER BY CatId; Резултат:
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.
Проблемът тук е, че се опитвам да поръчам по CatId колона, но всъщност не избирам тази колона в моя SELECT списък.
Най-лесният начин да поправите това е да добавите тази колона към моя SELECT списък.
SELECT
CatId AS PetID,
CatName AS PetName
FROM Cats
UNION ALL
SELECT
DogId AS PetID,
DogName AS PetName
FROM Dogs
ORDER BY PetId; Резултат:
+---------+-----------+ | PetID | PetName | |---------+-----------| | 1 | Brush | | 1 | Yelp | | 2 | Scarcat | | 2 | Woofer | | 3 | Flutter | +---------+-----------+
Всъщност в моя случай избирам колони с различни имена (CatId срещу DogId , CatName срещу DogName ), затова реших да използвам псевдоним за тези колони (PetId и PetName ). В този случай мога да ORDER BY псевдонимът (PetId ).