2010-04-15 83 views
2

我想實現或使用允許在SQLite中逐步瀏覽表的功能。穿越SQLite表

如果我有一個表格Products有100k行,我想一次檢索10k行。類似於網頁將列出數據的方式,並具有鏈接來遍歷數據。

是否有選擇語句可以使這個簡單?我看到並嘗試將ROWID與LIMIT結合使用,如果不訂購數據,似乎可以。

//這似乎工程,如果不訂購。

SELECT * FROM Products WHERE ROWID BETWEEN x AND y; 
+0

如果您訂購行,會發生什麼? – 2010-04-15 14:03:37

+0

如果未明確指定,ROWID仍然可用,但不能保持爲靜態。也就是說,隱式ROWID將由行物理地寫入表中的順序決定。因此,如果表按名稱順序存儲,並且我想按數量進行排序,則ROWID將不會表示返回的順序,而是隱式的ROW編號。 – galford13x 2010-04-15 14:14:29

+0

你應該儘量避免在SQL工作中儘量使用任何內建的ROWID。這不是SQL標準的一部分,它是一個附加組件,不能保證在大多數RDBMS上。我會使用ORDER BY子句來創建一個排序。我發現大多數查詢都可以在不依賴隱式行號的情況下編寫,並且有一點想象力。 – 2010-04-15 14:33:41

回答

3

您是否在尋找offset and limit? SQLite支持這些。然後您可以使用SQLite也支持的order by

編輯:要詳細,你可以這樣做:

Select * from Products order by name limit 10000 offset 10000;

這從表中,按名稱排序取第二10K頁。在處理限制/偏移量和排序時注意性能問題。

+0

你可以在你的代碼中使用這個查詢,並將值傳遞給偏移的參數化值,你爲每個需要的記錄塊增加10k。 – 2010-04-15 14:36:58

+0

謝謝,這正是我正在尋找的。 – galford13x 2010-04-15 14:38:52

+0

感謝您修復我的錯誤羊 – 2010-04-15 14:54:39