Мне нужно выбрать 3 уникальных случайных строки идентификатора MySQL из таблицы, которая постепенно растет и растет с течением времени, и имеет WHERE 'status' = 'available'. Таким образом, он выбирает только номер id, если status = доступен.MySQL select 3 UNIQUE random ID rows fast WHERE
Не будет пробелов, так как все данные сохраняются для соблюдения соблюдения записей, если данные удаляются пользователем, он фактически не удаляется, только СТАТУС помечен как «удаленный».
Я прочитал много сообщений о предмете, но все это, похоже, сводится к выбору только одного результата, а затем повторение его 3 раза, проблема в том, что он может снова выбрать тот же идентификатор, поэтому любое решение моей проблемы будут высоко оценены.
Спасибо
:)
Я смотрел на делать что-то вроде этого (взято отсюда ... MySQL select 10 random rows from 600K rows fast)
SELECT id
FROM table AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(id)
FROM table)) AS id2)
AS r2
WHERE r1.id >= r2.id2 AND status = 'available'
ORDER BY r1.id ASC
LIMIT 1
Что дает мне то, что мне нужно, но это только возвращает 1 случайный уникальный «выбор», плюс ЕСЛИ Я его ограничиваю до 3, он не всегда выбирает 3, и если он выбирает 3, они всегда кажутся последовательными, что не случайно!
Есть ли способ повторить запрос, сохранить выбранный идентификатор и продолжить цикл/выполнение запроса до тех пор, пока не будут выбраны 3 ID. В RANDOM, которые являются разными. Это мой вопрос :)
Это может быть быстро, но оно имеет тенденцию «предпочитать» записи после удаления. –