Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Елементите ORDER BY трябва да се появят в списъка за избор, ако изразът съдържа оператор UNION, INTERSECT или EXCEPT (SQL Server)

Ако изпълнявате заявка в 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 ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво е форматен низ в SQL Server?

  2. Неемоционален логически поглед към конвенциите за именуване на SQL Server

  3. В коя колона трябва да се постави клъстерираният индекс?

  4. Незадължителни аргументи в клаузата WHERE

  5. Поправете съобщение 8116 „Типът на данни за аргумента varchar е невалиден за аргумент 1 на функцията session_context“ в SQL Server