hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。 |
取得するデータの条件はWHERE節で指定できますが、これだけだと条件に適応するすべてのデータを取得してしまいます。このページではこの取得する件数を指定するための方法を紹介します。
例えばRPGでパーティの所有するアイテムを表示する場合に持っているアイテムすべてのデータをメモリに読み込んでしまうと、場合によっては速度劣化につながります。このページで紹介する方法を使って画面に表示できるデータだけを読み込むようにすれば、これを改善できるでしょう。
なお、最新の情報は本家サイト(英語)にあります。
LIMIT節は取得する件数を指定するためのオプションです。WHERE節やORDER BY節に続けて記述します。
SELECT * FROM table WHERE ... LIMIT (取得する件数)
例えばLIMIT 20とすることで、はじめの20件だけを取り出すことができます。
LIMIT節だけでは「最初のうちの数件」を取得することしかできませんが、オプションを利用することで最初の数件をスキップすることができます。これによって「5番目から10番目まで」といった取出しが可能になります。
SELECT * FROM table WHERE ... LIMIT (取得する件数) OFFSET (スキップする件数)
なおOFFSETはLIMIT節のオプションなので、LIMITと組み合わせずに使うことはできません。
1234567891011121314151617181920212223242526272829303132333435// HSP3.1 & SQLele1.14 & SQLite3.6.14 で動作確認済み#include "sqlele.hsp"#const ITEM_MAX 10sql_open ":memory:"*create_tableitem_names(0) = "木の剣", "はがねの剣", "勇者の剣","木の盾","はがねの盾","勇者の盾"item_names(6) = "きず薬","特効薬","万能薬","復活薬"sql_q "CREATE TABLE ITEMS(item_id INTEGER PRIMARY KEY, item_name TEXT)"sql_q "BEGIN"repeat ITEM_MAXsql_q "INSERT INTO ITEMS(item_name) VALUES('" + item_names(cnt) + "')"loopsql_q "COMMIT"*show_all_itemsmes "すべてのアイテムを表示します。"sql_q "SELECT item_id, item_name FROM items ORDER BY item_id"repeat statsql_nextloop*show_limited_itemsmes "すべてのアイテムのうち、4番目から5つだけを表示します。"sql_q "SELECT item_id, item_name FROM items ORDER BY item_id LIMIT 5 OFFSET 3"repeat statsql_nextloopsql_closestop