Se você estiver executando uma consulta no SQL Server e receber o seguinte erro…
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.
…você deve verificar sua instrução SQL – você provavelmente omitiu uma coluna do seu
SELECT
Lista. Como a mensagem de erro indica, você provavelmente só verá esse erro se estiver executando uma consulta que contenha um
UNION
, INTERSECT
ou EXCEPT
operador. Basta adicionar a coluna ao seu
SELECT
lista deve corrigir o problema. Exemplo
Aqui está um exemplo de geração do erro.
SELECT
CatName
FROM Cats
UNION ALL
SELECT
DogName
FROM Dogs
ORDER BY CatId;
Resultado:
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.
O problema aqui é que estou tentando ordenar pelo
CatId
coluna, mas não estou selecionando essa coluna no meu SELECT
Lista. A maneira mais fácil de corrigir isso é adicionar essa coluna ao meu
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;
Resultado:
+---------+-----------+ | PetID | PetName | |---------+-----------| | 1 | Brush | | 1 | Yelp | | 2 | Scarcat | | 2 | Woofer | | 3 | Flutter | +---------+-----------+
Na verdade, no meu caso estou selecionando colunas com nomes diferentes (
CatId
vs DogId
, CatName
vs DogName
), então decidi usar um alias para essas colunas (PetId
e PetName
). Nesse caso, posso ORDER BY
o nome do alias (PetId
).