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
vs DogId
、CatName
vs DogName
)、そのため、これらの列にエイリアスを使用することにしました(PetId
およびPetName
)。この場合、ORDER BY
できます エイリアス名(PetId
。