Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Pozycje ORDER BY muszą pojawić się na liście wyboru, jeśli instrukcja zawiera operator UNION, INTERSECT lub EXCEPT (SQL Server)

Jeśli uruchamiasz zapytanie w SQL Server i pojawia się następujący błąd…

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.

…powinieneś sprawdzić swoją instrukcję SQL – prawdopodobnie pominąłeś kolumnę w swoim SELECT lista.

Jak sugeruje komunikat o błędzie, prawdopodobnie zobaczysz ten błąd tylko wtedy, gdy uruchomisz zapytanie zawierające UNION , INTERSECT lub EXCEPT operatora.

Po prostu dodaj kolumnę do SELECT lista powinna rozwiązać problem.

Przykład

Oto przykład generowania błędu.

SELECT 
    CatName
FROM Cats
UNION ALL
SELECT 
    DogName 
FROM Dogs
ORDER BY CatId;

Wynik:

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.

Problem polega na tym, że próbuję zamówić według CatId kolumna, ale w rzeczywistości nie wybieram tej kolumny w moim SELECT lista.

Najłatwiejszym sposobem naprawienia tego jest dodanie tej kolumny do mojego SELECT lista.

SELECT 
    CatId AS PetID,
    CatName AS PetName
FROM Cats
UNION ALL
SELECT 
    DogId AS PetID,
    DogName AS PetName
FROM Dogs
ORDER BY PetId;

Wynik:

+---------+-----------+
| PetID   | PetName   |
|---------+-----------|
| 1       | Brush     |
| 1       | Yelp      |
| 2       | Scarcat   |
| 2       | Woofer    |
| 3       | Flutter   |
+---------+-----------+

Właściwie w moim przypadku wybieram kolumny o różnych nazwach (CatId vs DogId , CatName vs DogName ), więc zdecydowałem się użyć aliasu dla tych kolumn (PetId i PetName ). W takim przypadku mogę ORDER BY nazwa aliasu (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, aby znaleźć pierwszy nienumeryczny znak w łańcuchu

  2. Jak NULLIF() działa w SQL Server

  3. Jak sprawdzić wyniki zadania pakietu SSIS po jego zakończeniu?

  4. Jak wybrać określoną liczbę znaków z lewej lub prawej strony ciągu w SQL Server?

  5. Znajdź uszkodzone obiekty w SQL Server