Обновить случайно выбранную строку в SQLite - PullRequest
3 голосов
/ 18 июня 2009

У меня есть таблица и определенное значение - по умолчанию она равна -1, но я хочу изменить ее на 0 для случайной строки.

Каков правильный запрос для этой операции?

Вот что я попробовал:

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

1 Ответ

3 голосов
/ 18 июня 2009

Хм, я только что сделал пример таблицы, и ваш запрос, кажется, работает как написано:

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

Итак, другими словами, ваш запрос верен - ваша ошибка, вероятно, в другом месте вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...