[ Oracle SQL ] ソートした結果を union 句で結合する ( ORA-00933 )

Pocket

まずは、間違った union all / union 句の使用例です。ソートした結果をマージしようとしていますがエラーとなってしまいます。ここでは、2パターンのエラーとなる SQL と正常に union を行う SQL サンプルを掲載しています。

スポンサーリンク

ORA-00933: SQLコマンドが正しく終了されていません。

select id, name from table1 order by id
union all
select id, name from table1 order by id

-- ORA-00933: SQLコマンドが正しく終了されていません。

ORA-00907: 右カッコがありません

括弧で括っても駄目です。

(select id, name from table1 order by id)
union all
(select id, name from table1 order by id)

-- ORA-00907: 右カッコがありません。

union 句のあとに order by 句が解釈されるため、上記のようにエラーとなっています。 ソートした結果同士を union 句で結合するエラーとならない SQL を以下に示します。

ソートした結果同士を union で結合するSQL例

select id, name from (select id, name from table1 order by id)
union all
select id, name from (select id, name from table1 order by id)

また、union で結合した結果全体を並び替えるには、以下の SQL で問題ありません。

select id, name from table1 
union all
select id, name from table1 
order by id
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *