sql >> Database teknologi >  >> RDS >> Sqlserver

ORDER BY-elementer skal vises i valglisten, hvis sætningen indeholder en UNION-, INTERSECT- eller EXCEPT-operator (SQL-server)

Hvis du kører en forespørgsel i SQL Server, og du får følgende fejlmeddelelse...

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.

…du bør tjekke din SQL-sætning – du har sandsynligvis udeladt en kolonne fra din SELECT liste.

Som fejlmeddelelsen antyder, vil du sandsynligvis kun se denne fejl, hvis du kører en forespørgsel, der indeholder en UNION , INTERSECT eller EXCEPT operatør.

Du skal blot tilføje kolonnen til din SELECT listen burde løse problemet.

Eksempel

Her er et eksempel på generering af fejlen.

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

Resultat:

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.

Problemet her er, at jeg prøver at bestille efter CatId kolonne, men jeg vælger faktisk ikke den kolonne i min SELECT liste.

Den nemmeste måde at løse dette på er at tilføje den kolonne til min SELECT liste.

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

Resultat:

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

Faktisk vælger jeg i mit tilfælde kolonner med forskellige navne (CatId vs DogId , CatName vs DogName ), så jeg besluttede at bruge et alias for disse kolonner (PetId og PetName ). I dette tilfælde kan jeg ORDER BY aliasnavnet (PetId ).


  1. Forbind ODBC-applikationer på Windows til QuickBooks Online

  2. JDBC ResultSet får kolonner med tabelalias

  3. MSDTC på serveren 'serveren er ikke tilgængelig'

  4. Sådan beregnes procentdelen af ​​to kolonner i MySQL