2009-06-18 2 views
3

内の行を選択しました。アップデートは、ランダムに私はテーブルとそれに特定の値を持っているSQLiteの

この操作のための右のクエリは何ですか?ここで

は、私が試したものです:

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

あなたはそれを試したときに何が起こったのですか?問題はありましたか?エラー? – stefanB

+0

は役に立ちますか? –

+0

"ORDER BY RANDOM()"の問題点は何ですか? –

答えて

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 

だから、他の言葉で、あなたのクエリがされますそうですね。あなたのエラーはおそらくあなたのコードのどこかにあります。

関連する問題