2012-06-23 30 views
1

請幫我找到下面查詢的sqlite等價物。嘗試了很多。Mysql查詢的對應Sqlite查詢語法

SET @rownum := 0; 
SELECT * FROM (
SELECT @rownum := @rownum+1 AS rank, id 
FROM tbl_flight 
ORDER BY id DESC 
) AS tbl_flight WHERE id = 2 
+0

請解釋一下你正在試圖做的(你查詢應該返回什麼)你的問題是什麼,這樣的人有類似問題可以找到在未來這個問題。 (也可以幫助那些熟悉sqlite但不熟悉mysql的人給你一個答案。) – Mat

回答

2

不能在單個查詢做到這一點,但您可以使用臨時表和每個表的ROWID屬性:

http://sqlfiddle.com/#!5/f0a1b/8(您不能運行小提琴兩次,你必須始終重新運行前先重建模式)

DROP TABLE IF EXISTS tmp; 

CREATE TEMPORARY TABLE tmp AS 
    SELECT id 
    FROM tbl_flight 
    ORDER BY id DESC; 

SELECT tmp.rowid AS rank, tmp.id FROM tmp WHERE id=2; 
+0

有趣的是,如果你切換到SQLite(WebSQL)並在該環境中運行你的代碼,你不會得到那個I/O錯誤: http://sqlfiddle.com/#!7/f0a1b/2必須是奇怪的SQL.js –

+0

此版本似乎並沒有這個問題:http://sqlfiddle.com/#!5/f0a1b/ 10 –