selectとdistinctとorderbyとORA-01791
部屋とワイシャツと私みたいになってる。
selectでdistinctとorder by を一緒に掛けると、ORA-01791がでる。
Error: ORA-01791: SELECT式が無効です。
原因は以下2つの複合型です。
1.order byで指定しているカラムがselectに無い
2.出力内容をdistinctしている
1つ1つだとエラーにならないけど、両方合わさると、
ソートのために使ったカラムがあるけど、distinctでユニークにしていいの? ってなるっぽい。
参考:
http://www.oracle.com/technetwork/jp/database/articles/sql101/o32sql-1541432-ja.html
どうしても上記のようなものをやりたい場合は、一旦サブクエリにするか、
正しい情報でソートするか、ソートする情報を出すかしましょう。
綺麗なSQLを書こうと思ったら、あまり引っかからない現象ですが、他人が作ったものをメンテするときにたまにあたるので明記しておきます。
部屋とワイシャツと私みたいになってる。
selectでdistinctとorder by を一緒に掛けると、ORA-01791がでる。
Error: ORA-01791: SELECT式が無効です。
原因は以下2つの複合型です。
1.order byで指定しているカラムがselectに無い
2.出力内容をdistinctしている
1つ1つだとエラーにならないけど、両方合わさると、
ソートのために使ったカラムがあるけど、distinctでユニークにしていいの? ってなるっぽい。
参考:
http://www.oracle.com/technetwork/jp/database/articles/sql101/o32sql-1541432-ja.html
どうしても上記のようなものをやりたい場合は、一旦サブクエリにするか、
正しい情報でソートするか、ソートする情報を出すかしましょう。
綺麗なSQLを書こうと思ったら、あまり引っかからない現象ですが、他人が作ったものをメンテするときにたまにあたるので明記しておきます。
コメント