我有此表的值:查找n個連續的行使用SQLite
val
1
2
3
7
8
9
表中也有一個ID列,而不是相關的現在。
我想插入一個值,但規則是不能有任何重複的值。比方說,我插入一個新的2,當前的2應該變成3,依此類推,直到值3,它將變成4.在這種情況下,值7,8和9不需要被移動」。
我正在使用SQLite。插入或更新部分可以在需要的新值持有者被「移動」之後在單獨的查詢中完成。
到目前爲止,我用這樣:
//being n my new value.
UPDATE values SET val = val+1 WHERE val >= n
但是,這也將修改7,8和9,這並不需要修改。
有關如何解決這部分問題的任何想法?限制更新只有連續的值?
在一個查詢中完成整個插入/更新的更好方法也將非常感謝。
刪除單行就像當你也重新編號值'更新值S ET val = val-1 WHERE val> = n'。這樣,你將始終有連續的數字,並可以再次使用'UPDATE值SET VAL = VAL + 1 WHERE VAL> = n'。不是最佳的,但工作。 – PhilMasterG 2012-07-15 15:26:35
謝謝你的想法,但非連續性的來源是用戶。這個值被用作優先級,用戶可以重新分配一個任務的優先級,並在1到20的範圍內給它賦予一個隨機優先級。 – 2012-07-15 15:31:03
如果'val'列有一個實際的'UNIQUE'約束,那麼你可能需要'UPDATE ... ORDER BY',不幸的是,它默認情況下不會被編譯爲SQLite。 http://www.sqlite.org/lang_update.html – biziclop 2012-07-15 15:38:09