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

SqLite3を使っています。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/02/18 14:40:15
  • 終了:2010/02/25 14:45:02

回答(4件)

id:b19901108 No.1

b19901108回答回数55ベストアンサー獲得回数62010/02/18 15:46:08

先頭から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

nzworks回答回数13ベストアンサー獲得回数02010/02/18 16:45:54

ポイント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

natema回答回数21ベストアンサー獲得回数02010/02/18 18:15:20

ポイント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

y-kawaz回答回数1420ベストアンサー獲得回数2252010/02/19 11:00:27

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


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

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

id:suzume_oyado

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

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

2010/02/19 11:03:41

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません