[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に限ったことではないようです。
== ランキングに参加しています。ぜひクリックお願いします ==
[Eclipse] Tomcatを動かしていると、一定間隔で勝手にデバッグで中断する [Windows10] iAStorDataSvcのCPU負荷が気になる