Firebirdのunion演算子の結果に対してorder byで並び替える

Firebird 2.5で、union演算子の結果に対してorder byで並び替えるために、次のようなSQLを書いたらエラーになった。

select C1, C2, C3 from T1
union all 
select C1, C2, C3 from T2
order by C1

解決策は、次のように書く。

select C1,C2,C3
from (
  select C1, C2, C3 from T1
  union all 
  select C1, C2, C3 from T2
)
order by C1

コメント

  1. 2.5は環境的に利用していないので間違っていたら申し訳ありませんが、
    2.0までは、以下の様にしていましたが、↓の方法でも出来ませんか?

    select C1, C2, C3 from T1
    union all
    select C1, C2, C3 from T2
    order by 1
    ↑orderしたいフィールド番号を指定

  2. 長江様
    ご指摘の通り、フィールド番号を指定すればできますね。
    教えていただきありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください