- PR -

副問い合わせのORDER BY

投稿者投稿内容
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-02-16 18:35
まつじんと言います。
実は、現在javaのプログラムからoracle 10gに下記のsql文を送信しようとしました。
しかし、全然受け付けてくれず、しかもoracleクライアント側でも右かっこがありませんとエラーが出ました。いろんなところを調べてみましたが、全然分かりませんでした。
簡単な間違いだとは思うのですが、解決しないのでお力添えをお願いいたします。

select ID, NAME from master.tbl where ID IN(select ID from master.tbl order by ID);
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-02-16 18:37
すみません。書き忘れましたが、order by ID を取り除くと普通に検索できます。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-16 18:43
ORDER BY は何故必要なのですか?
_________________
囚人のジレンマな日々
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2006-02-16 18:43
SQL*PlusでこのSQLを流した場合はどうでしょうか。同じエラーが出力されますか?

ところで、
コード:
select ID, NAME from master.tbl where ID IN(select ID from master.tbl order by ID);


はどういう処理結果を期待されていますか?
単純に
コード:
select ID, NAME from master.tbl order by ID;


で良いような気がするのですが...
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-02-16 18:45
「右かっこがありません」ってエラーは意味不明ですが、
副問い合わせ内でのORDER BY句は構文エラーのようですね。
なので副問い合わせじゃないSELECT文でORDER BY句を指定するようにしましょう。

#別名つけないとダメかな。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-02-16 18:45
IN() 内にORDER BYを書くからですよ・・・。

IN()内でORDER BYを書く必要性があるとは思えません。
副問い合わせのSQLで必要なのは、取得できた値であり、その並び順は関係ないと思いますが。

取得できた結果をソートするためにORDER BYを用いてください。
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-02-16 18:56
囚人さん、いーたさん返事ありがとうございます。
先ほどのコードは途中でorder by された値をROWNUMで番号を振りわけた後に
betweenで範囲を指定して取得しようとする前に動きませんでした。
ちなみにSQL*PLUSでも
同じように「右カッコがありません」と表示されてしまいました。
まつじん
ベテラン
会議室デビュー日: 2005/12/02
投稿数: 54
投稿日時: 2006-02-16 18:59
夏椰|。σ)oさん、burton999さん返事ありがとうございました。
構文間違いだったとは気づきませんでした。
教えて頂いたようにやろうと思います。
ありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)