В общем есть база вида id | group | user
Надо выбрать 1 случайную строку из 100 которая содержит group = "vip" , а user = "". И записать в user этой строки например 'что-то'. Как это сделать?
UPD: Запрос в ответе не работает, выдает ошибку 1064, вот таблица, может что-то там поправить (ошибка у key).
Ответ
Самый простой вариант, это извлечь случайный идентификатор из этих таблиц
SELECT
id
FROM
tbl
WHERE
group = "vip" AND user = ""
ORDER BY RAND()
LIMIT 1
Далее полученный таким образом идентификатор использовать для UPDATE-запроса
UPDATE
tbl
SET
user = 'что-то'
WHERE
id = 3432
Будьте осторожны с ORDER BY RAND() на гигантских таблицах, так как это полный скан таблицы. Если есть возможность вычислить случайный идентификатор другим способом - хорошо бы им воспользоваться (однако, для этого нужно больше информации о проекте).
Комментариев нет:
Отправить комментарий