- 締切済み
UNION / UNION ALL 時のORDER BY について
初めて質問させていただきます。 表A(以下,TBL_A) と 表B(以下,TBL_B)があり,表名が 異なるだけでカラムの項目数,データ型は一致していてそれぞれ [TBL_A] SELECT * FROM TBL_A ORDER BY 1, 2 [TBL_B] SELECT * FROM TBL_B ORDER BY 2, 1 を UNION / UNION ALL したいのですが,上記のように ORDER BY が異なっている場合にはどのようにすれば いいのでしょうか? 苦戦中の成果物としてはそれぞれに固有の区分カラムを設け, その区分で判断し DECODE で ORDER BY しようとしたのですが 「"右カッコがありません"」と出て行き詰っています。 SELECT 区分, ○○, □□ FROM TBL_A WHERE ○○ = ??? UNION ALL (SELECT 区分, ○○, □□ FROM TBL_B) ORDER BY 区分, DECODE(区分,A,(1,2),B,(2,1)) 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
UNION ALL がやりたいのは解るが、 UNIONを使用したい場合、どんな結果がほしいのか解らない。 UNIONを使用した場合は、 重複行を消すために、マージソート等でそれぞれのテーブルが勝手にソートされるので、無理かと。 つまり、UNIONを使用したい場合、あなたがどんな結果をほしいのかよく解らない。←補足要求 UNION ALLならば、 select * from (SELECT * FROM TBL_A ORDER BY 1, 2) UNION ALL select * from (SELECT * FROM TBL_B ORDER BY 2, 1) でいけそうだが・・・ 環境が無いので参考程度で!
補足
返信遅れました。 marimari01さんありがとうございます。 題名/本文に「UNION / UNION ALL」と書いたのは ただUNIONの種類を記載しただけです。 分かりにくくてすみません。 おっしゃる通り「UNION ALL」をしたいので select * from (SELECT * FROM TBL_A ORDER BY 1, 2) UNION ALL select * from (SELECT * FROM TBL_B ORDER BY 2, 1) で試してみたいと思います。 ありがとうございました。