sql >> データベース >  >> RDS >> Sqlserver

ステートメントにUNION、INTERSECT、またはEXCEPT演算子が含まれている場合は、ORDER BY項目を選択リストに表示する必要があります(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 vs DogIdCatName vs DogName )、そのため、これらの列にエイリアスを使用することにしました(PetId およびPetName )。この場合、ORDER BYできます エイリアス名(PetId


    1. 非常に大きなテーブルでの(列ストア)圧縮の楽しみ–パート2

    2. Oracle sqlチュートリアル:データセットの制限

    3. Oracle:シーケンスMySequence.currvalはこのセッションではまだ定義されていません

    4. pgAdmin4を実行しようとしてエラーが発生しました