2009-06-18 24 views
3

我有一個表並在其中有一個確定的值 - 默認情況下它被設置爲-1,但我想將它更改爲0以獲得隨機行。在SQLite中更新隨機選擇的行

什麼是這個操作的正確查詢?

這裏是我的嘗試:

UPDATE statuses SET status = 0 
WHERE word_id = (
     SELECT word_id FROM statuses WHERE status = -1 ORDER BY RANDOM() LIMIT 1 
) 
+0

當你嘗試過時發生了什麼?有問題嗎?錯誤? – stefanB 2009-06-18 06:14:16

回答

3

嗯,我只是做了一個示例表和您的查詢似乎寫入工作:

sqlite> create table statuses (word_id, status default -1); 
sqlite> insert into statuses (word_id) values (1); 
sqlite> insert into statuses (word_id) values (2); 
sqlite> insert into statuses (word_id) values (3); 
sqlite> insert into statuses (word_id) values (4); 
sqlite> insert into statuses (word_id) values (5); 
sqlite> select * from statuses; 
1|-1 
2|-1 
3|-1 
4|-1 
5|-1 
sqlite> UPDATE statuses SET status = 0 
    ...> WHERE word_id = (
    ...>  SELECT word_id FROM statuses WHERE status = -1 ORDER BY RANDOM() LIMIT 1 
    ...>); 
sqlite> select * from statuses; 
1|-1 
2|-1 
3|0 
4|-1 
5|-1 

因此,換句話說,你的查詢正確 - 你的錯誤可能在你的代碼中的其他地方。