2014-06-16 54 views
1

如果表Scores看起來是這樣的:SQLite是否保證結果順序匹配表?

_id | score 
--------- 
    1 | 1,000 
    2 | 2,000 
    3 | 3,000 
    4 | 4,000 
    5 | -1 
    6 | -1 
    7 | -1 

將下面的查詢總是返回_id升序行?

SELECT * FROM Scores 

另外,以下查詢是否總是返回_id(即5)的第一個有序事件?

SELECT _id FROM Scores WHERE Score = -1 LIMIT 0, 1 

這裏的關鍵是總是。我已經測試過它,它按預期工作,但我想驗證這個結果是有保證的,並且在這些情況下不需要order by子句。

謝謝大家。

+0

我建議你使用order by子句來解決這個問題。 –

回答

0

默認情況下,行按照增加的rowid的順序在邏輯上存儲。

如果您選擇stament不包括訂單,或者表沒有索引,默認的排序順序永遠是主鍵列,這是在這種情況下

的_ID列更多here

+0

鏈接的文章沒有提及返回行的順序。 –

+0

我相信它在2.1節 – NeedAnswers

+1

沒有。這就是說「SELECT * FROM fruitsforsale ORDER BY rowid;」請注意訂單?優化器消除這種需求的事實是一個稍微不同的問題... –

1

數據庫的原理之一是,你不能假設你的寄存器是以任何方式排序的,因爲SQLite的內部實現可能因設備而異。您應該使用運營商order by以確保某個訂單。

相關問題