Страницы

Поиск по вопросам

пятница, 21 июня 2019 г.

Выбор случайного значения в базе данных

В общем есть база вида 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() на гигантских таблицах, так как это полный скан таблицы. Если есть возможность вычислить случайный идентификатор другим способом - хорошо бы им воспользоваться (однако, для этого нужно больше информации о проекте).

Комментариев нет:

Отправить комментарий