2012-01-23 21 views
10

Select語句我想寫SQLite的說法是這樣的:SQLite中識別行號

SELECT * FROM Table WHERE RowNumber BETWEEN 1 AND 10; 

,但我沒有這樣的列ROWNUMBER。我的表中有主鍵。但是,有沒有行號默認情況下,我可以使用?

此外,我正在搜索有關編寫更復雜的SQLite語句的信息。所以如果你在書籤中有一些鏈接,請分享。

謝謝。

+0

這裏是幫了我一些額外的信息。就我而言,我對一組任意的rowid感興趣。 http://stackoverflow.com/questions/33512086/retrieve-sqlite-rows-by-rowid-efficiently/33512116#33512116 –

回答

26

你想用LIMIT and OFFSET

SELECT * FROM Table LIMIT 10 OFFSET 0 
+2

只是出於好奇。爲什麼你需要OFFSET 0? SELECT * FROM table LIMIT 10是否不夠? – Tooroop

+0

你是對的,如果從0開始,offset是可選的。我可能只是習慣性地寫出來的。 –

-1
SELECT * FROM Table WHERE ROWID BETWEEN 1 AND 10; 
+0

從1到10的rowid選擇不會授予您將返回10行,它不保證即使1行將被返回。 – kurast

+0

我想不是,如果表是空的..我想看到一個查詢.. – StevieG

+6

Rowid只是保證在sqlite中是唯一的,不保證是連續的。只是在接種疫苗命令後,他們從一個接一個地調整。大多數情況下,你提出的建議都可行。但如果我這樣做: 選擇*從表1到10之間的行之間的行; - 返回十行 從表中刪除1到10之間的行; SELECT * FROM TABLE WHERE ROWID BETWEEN 1 AND 10; - 即使剩餘的線條在桌子上吃完,也會返回零線。 VACCUUM; - 重新排列rowid SELECT * FROM表WHERE ROWID BETWEEN 1 AND 10; - 再次返回十行 – kurast

3

自動創建的表的rowid可以通過幾個不同的名稱訪問。從SQLite documentation

每SQLite表的每一行都有一個唯一標識的表中的行中的64位有符號整數的關鍵。這個整數通常被稱爲「rowid」。可以使用特殊大小寫無關名稱「rowid」,「oid」或「_rowid_」替代列名稱來訪問rowid值。

+0

'rowid'是一個隱藏的強大領域,謝謝。 –