
こんばんわ。
今、SQL作っているのですが、以下のSQLでは上位30位までしか取得できません。
上位10000位ぐらいまで取得するためにはどうのようにしたらよいのでしょうか。
ご享受よろしくお願い致します。
lang
1select 2 xxx 3from 4 yyy 5 6order by zzz 7
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


回答6件
0
ベストアンサー
MySQLならtomomoさんのがほぼ答えだと思います。
少し厳密に書くと、
lang
1limit 10000
だと先頭から1万件
lang
1limit 10000,10000
だと一番先頭の番号が0なので10001件目から10000件を取得する感じですね。
SQLSERVERだとlimitが無いので、2008より前ならROW_NUMBERを使う、2012以降ならOFFSETですかね。
ちょっと気になるのは質問者さんのSQL文だと本来は「全件」取得してくるはずです。
(メモリが許せば、DBに10万件入ってれば10万件取ってくる)
それが30件位だけ取得されるってのは何か他に原因がありませんか??
後は揚げ足で申し訳ないですが、降順なら
lang
1ORDER BY XXX DESC
ですね。
投稿2015/02/24 17:36
総合スコア1615
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
こんな感じですかね?
lang
1select 2 xxx 3from 4 yyy 5order by zzz desc 6limit 10000 7offset 0
投稿2015/02/24 20:48
総合スコア118
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
landy77様も言及されていますが、
where句で絞りこんでいないのに上位30位までしか表示されない・・・?
orderby句はデータを絞るような機能は無いはずですが・・・。
私も他に原因があるように思います。
作成したsqlをもう少し詳細に記載していただくことはできませんか?
あと、from句に指定したテーブルの行数もお忘れなく。
<余談>
あくまで私の経験則ですが、
実装したプログラムが思い通りに動かない場合の原因の9割以上が
「うっかり」や「見落とし」、「勘違い」といったイージーミスです。
SqlServerだとManagementStudioというGUIツールで複数サーバに
接続してSqlを発行できるので、Aサーバで発行したつもりが、
実はBサーバで発行してたなんていうケースもあります。
(実体験です)
ちなみに、スレの流れを受けて上位○○位を表示するとき、
SQLServerの場合は「top」を使います。
lang
1select top (10000) 2 column1 3 ,column2 … 4 from table1 5 order by columnX
投稿2015/02/25 01:28

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
もし psql を使用していて、コンソールの画面一杯までしか表示されないのであれば(ようするにページャーで表示されているのであれば)、下記を打ち込めばページャーが無効になって一気に全部表示されるようになります。
¥pset pager
投稿2015/02/25 00:22
総合スコア4516
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/05 15:04

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。