プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Oracle] DISTINCTがエラーになる

重複を取り除くのにとっても便利なDISTINCT句ですが、
ORDER BY句を含めたSELECT文にDISTINCTを付けるとエラーになることがあります。

例えばこんなSQL

SELECT DISTINCT ID
FROM TEST_TABLE
ORDER BY NAME

ORA-01791: SELECT式が無効です。

文法は間違ってないはずなのに。。。と原因がわからなくて困ることがあります。
DISTINCTのつづりを間違えたかと何度も見直したり。

これはDISTINCTを付ける場合、ORDER BYにそのカラムを指定する必要があるということです。(SELECT句に指定しているカラムのみ)
ORDER BYにそのカラムが指定されていても、それ以外のカラムもソート対象に指定していれば、やはりエラーになります。

DISTINCTもGROUP BYも基本同じものと考えれば確かにその通りなのですが、相変わらずエラーメッセージと原因が結びつかないので、気づくまでに時間がかかります。

しかし、上記SQLでは、NAME順に並べたIDの重複を取り除いて取得してほしいってだけなので、イメージ的には普通に実行できそうなんですけど、だめですかね。Oracleさん

※Oracleに限ったことではないようです。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

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

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