SQLを教えて下さい。limit 100で、先頭から100件ですが。これを先頭から50件と最後から50件を取得するように、(ひとつのクエリで)できませんか?

SqLite3を使っています。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/02/25 14:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:b19901108 No.1

回答回数55ベストアンサー獲得回数6

先頭から50件、最後から50件をunionで結合してはどうですか?

http://rktsqlite.sourceforge.jp/sqlite/manip.html

id:suzume_oyado

2回クエリして、unionという事でしょうか?

1回でやりたいのですが。

2010/02/18 15:49:15
id:nzworks No.2

回答回数13ベストアンサー獲得回数0

ポイント45pt

(select * from tbl_name limit 50) union all (select * from tbl_name order by col_name desc limit 50) order by col_name;

重かったらすみません;;

id:suzume_oyado

うーむ。やはり、2回走らせないと駄目でしょうか・・・。

2010/02/18 16:48:02
id:natema No.3

回答回数21ベストアンサー獲得回数0

ポイント45pt

unionを使う場合は、これで1回(1文)なんですよ。

SqLite3の場合、DBエンジンが貧弱なのでどんなとり方をしても

たいすてスピードは変りません。

id:suzume_oyado

それって、2回のSelectが走りませんか?

今はWhereやGroup byの条件が無いのでいいのですが、これが重くなると これを2回やりたくないのです。

2010/02/18 22:54:26
id:y-kawaz No.4

回答回数1422ベストアンサー獲得回数226

UNIONによるクエリを1回とみなさないのでしたら出来ません。


速度が問題になっているのであればクエリの回数の問題ではなく、SQLiteの限界かDB設計の問題だと思います。

where句やorder byに使っているカラムにインデックスは設定してありますか?まずはその辺りを見直してみるべきだと思います。

id:suzume_oyado

>where句やorder byに使っているカラムにインデックスは設定してありますか

いや、だからそういう事ではなく。

2010/02/19 11:03:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません