1. ホーム
  2. sql

どのようにSQLでunion allとorder byを使用するには?

2023-12-31 17:16:27

質問

以下のようなSQLクエリを試してみました。

SELECT * FROM (SELECT * 
FROM TABLE_A ORDER BY COLUMN_1)DUMMY_TABLE
UNION ALL 
SELECT * FROM TABLE_B 

以下のようなエラーになります。

ORDER BY 節は、ビュー、インライン関数、派生テーブル、サブクエリ、および共通テーブル式では無効です。 テーブル、サブクエリ、および一般的なテーブル式では、TOP または FOR XMLも指定されていない限り、無効です。

union allでorder byを使用する必要があります。どうすれば実現できますか?

どのように解決するには?

SELECT  * 
FROM 
        (
            SELECT * FROM TABLE_A 
            UNION ALL 
            SELECT * FROM TABLE_B
        ) dum
-- ORDER BY .....

のすべてのレコードを表示させたい場合は Table_A からのすべてのレコードをリストの先頭に表示したい場合は、順序付けに使用するユーザー定義の値を追加することができます。

SELECT  * 
FROM 
        (
            SELECT *, 1 sortby FROM TABLE_A 
            UNION ALL 
            SELECT *, 2 sortby FROM TABLE_B
        ) dum
ORDER   BY sortby