>SQLのIN句について入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。no2のSELECT処理を発行・・・し、ARRAYに検索結果を1つずつ詰めていく方が良いのでしょうか?初心者で恐縮ですが、どなたかご教授ください。通報するこの質問への回答は締め切られました。IN(1000個)”などと、1000個づつORで区切ると良いです。パフォーマンス的には、1件づつSELECTは圧倒的に遅くなります。テーブル(もしくはインデックス)をSELECTのたびに検索するからです。IN指定方式ならば、テーブル(もしくはインデックス)をなめるのは一回で済みます。件数が多いほど、顕著に差が出そうですね。SELECTを何のプログラムから発行しているかにもよりますが、1回1回のSQL発行によるオーバヘッド(通信・wait時間)なども、回数が多くなると蓄積して大きなものとなるので、SQL発行回数自体も多くなりすぎないよう配慮が必要となります。可能ならば、一度両方バージョン作ってみて時間を比較されると勉強になって良いと思いますよ。トレースも取ってみてみると良いと思いますわ。通報するこの回答へのお礼ありがとうございました。16:361000個以上のデータをin句に入れるよりは、いったん一時テーブルに格納して、副問い合わせにしたほうがいいのでは。通報するこの回答へのお礼ありがとうございました。21:59こんばんは。IN句の中に入れることのできる要素数の限界は1000個です。以前、この制限に引っかかったことがあって、1000個ずつ取ったことがありました。SELECT文を大量に投げるのはちょっと負担になるような。それ以前にIN句はあまり使いたくないですよね。Oracle10gのsql分についての質問です。SQLの、where句内の条件文について教えてください。回答数ランキングです。代わりこのQ&Aと関連する良く見られている質問QMAX値を条件にデータを取得するには?SQL文で困っています。下記のようなデータがあった場合、それぞれの区分毎に年月が最大(最新)のデータを取得したいです。(実際には1レコードにその他項目があり、それらも取得します。400よろしくお願いします。Aベストアンサーテーブル名をXXXとすると次のようなSQLでよいと思います。表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の書き方がわからず困っています。(+)としてみましたが、うまくいきませんでした。任意の値と書くのが一般的でしょうね。他の回答も見るQ実行計画の「COST」と「BYTE」について教えていただきたいです。実行計画の「COST」と「BYTE」について教えていただきたいです。書籍にはCOST・・・・CBOによって見積もられた操作コスト。BYTE・・・・アクセスされるバイト数のCBOのアプローチによる見積もり。書かれていますが、いまいちピンときません。私は、COSTは、検索するテーブルのデータ量が多いほうがコスト値が大きくなる。BYTEは、検索条件に合致して取得できるデータが多いほうがバイト値が大きくなる。思っているのですが、正しいでしょうか?Aベストアンサーこのあたりを参考にしてください。COSTはデータ量だけではなく、その表やViewのアクセスに要する時間やSortや結合が必要なら、そのために必要なCPU時間等も考慮されています。表があるHDDのアクセス速度なんかも考慮されているし、表のエクステントが複数になっているかとかも考慮されています。書籍はわかりにくいかもしれませんが、嘘は少ないと思います。著者が思い違いをしてないとは言い切れませんが。joinの違いがよくわかりません。出てくる結果が違います。3の3レコードしか出力されません。出てくる結果が違います。...続きを読む他の回答も見るQSELECTで1件のみ取得するには?こんにちわ。いまORACLE9iを使用している者です。項目名;で並べ替えたデータ群のうち,先頭の1件だけを取ることができますが,ORACLEでそのような機能(SQL)はあるでしょうか?教えてください。併用する場合は注意が必要です。desc;とすると、「1001」ではなく、「1000」が返されます。適用されてしまうからです。1;とすれば良いです。他の回答も見るQSELECT文でINを使わずに検索したいDBはoracle10gです。テーブル(A_TBL)は以下の4つのカラムで構成されています。最新のレコード(最新とは更新日の大きいレコード)以外のstatusを'0'から'4'にします。例として実行前と実行後のテーブルは以下のような状態です。【実行前】seq_no,key_1,key_2,status1,001,20080101,12,001,20080102,03,002,20080101,04,003,20080101,05,003,20080102,06,003,20080103,07,004,20080101,08,004,20080102,2【実行後】seq_no,key_1,key_2,status1,001,20080101,12,001,20080102,03,002,20080101,04,003,20080101,45,003,20080102,46,003,20080103,07,004,20080101,48,004,20080102,2以下のようなSQLを作成し、更新しようとしました。'0')このSQLはin句を使っていますが、in句を使わずに同様の更新を実現することは出来るでしょうか?DBはoracle10gです。テーブル(A_TBL)は以下の4つのカラムで構成されています。最新のレコード(最新とは更新日の大きいレコード)以外のstatusを'0'から'4'にします。例として実行前と実行後のテーブルは以下のような状態です。昨日(No.2)は簡単に済ませて失礼しました。眠かったもので(笑)。副問合せであれば問題なしという記述もありました。こちらが正解でしょう。1000件というのは「式のリスト」の制限ですね。下はマニュアルの抜粋です。カンマで区切られた式のリストには、最大1000個の式を指定できます。ことができますが、各集合に指定できる式は最大1000個です。http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/server.102/B19201-02/expressions.htmlSELECT文で指定してやる分には問題ないと思いますよ。);COUNT(*)--------20001行が選択されました。13008行が選択されました。'0')でいいかもしれません。昨日(No.2)は簡単に済ませて失礼しました。眠かったもので(笑)。副問合せであれば問題なしという記述もありました。こちらが正解でしょう。1000件というのは「式のリスト」の制限ですね。下はマニュアルの抜粋です。カンマで区切られた式のリストには、最大1000個の式を指定できます。ことができますが、各集合に指定できる式は最大1000個です。http:...続きを読む他の回答も見るQsqlplusで表示が変なので、出力を整形したい。いつもお世話になっています。出力形式が見づらくて困っています。2の値3の値---------------------------カラム名1---------------------------カラム名2---------------------------カラム名3---------------------------上記のように意味不明な形式で出てきます。等のように分かりやすく表示できないでしょうか?ちなみにOracle9iR2を使用しています。sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。分かりづらくですいませんが、皆さま、ご教授お願いします。いつもお世話になっています。出力形式が見づらくて困っています。linesizeで確認ができる。5....というテーブルがあるとします.idを指定してpointを得たいのですが、そのidがこのテーブルに存在しない場合は空の結果ではなく0を返したいのです.plpgsqlなどを使いif文で場合分けすればできることはわかっているのですがSQL文だけで(それもできれば1文で)これを実現する方法はあるでしょうか?よろしくお願い致します。変則的ですが、これでよければidがユニークでなくても大丈夫ですし、集合関数を使わなくてもOKです。ex1.id;?を適当に変えてください。chukenkenkouさんの発想はこれですよね。他の回答も見るQ「いずれか」と「いづれか」どっちが正しい!?教えて下さいっ!”どちらか”と言う意味の「いずれか」のかな表記として「いずれか」と「いづれか」のどちらが正しいのでしょう???私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。「いずれか」が正しいです.「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.他の回答も見るQOracle(オラクル)で、日付時刻型の検索方法について質問させていただきます。データベースはオラクルを使っていて、SQL文で、抽出するときにエラーが出て困っています。19:13:00」という感じで入ってます。23:59:59'だと、エラーでできません。日付検索を行う場合は、以下のように書式を含める必要があります。'YYYY/MM/DD')と書くべきでしょうね。Inc.Q質問する(無料)Q&A検索goo検索gooIDで新規登録・ログイン新規登録する(無料)会員の方はこちら外部サービスのアカウントで新規登録・ログインYahoo!で新規登録・ログインGoogleで新規登録・ログインTwitterで新規登録・ログインFacebookで新規登録・ログインdアカウントで新規登録・ログイン※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。会員でない方、会員になるとあなたも質問や回答ができるようになります!!親切・丁寧な回答が集まる場30分以内に回答がもらえ回答数は平均3件!匿名(ニックネーム)での投稿なので。