Как я могу выбрать одну случайную запись из базы данных MySQL с помощью PHP?
Я хочу выбрать Author, AuthorText и Date?
SELECT Author, AuthorText, Date FROM table ORDER BY RAND() LIMIT 1
ORDER BY rand() LIMIT 1
сортирует все строки в таблице, что может быть очень медленным.
Лучшее решение: скажем, что ваша таблица имеет обычное поле автоматического прироста первичного ключа, генерирует номер rendom между min (id) и max (id) и выбирает самый близкий идентификатор.
Это не будет случайным, как «истинный» случайный выбор, потому что идентификатор после большого отверстия удаленных идентификаторов будет иметь более высокую вероятность выбора. Но это займет 50 мкс вместо 2 секунд, если ваш стол большой …
SET @t = (SELECT FLOOR(a + (ba)*rand()) FROM (SELECT min(id) as a, max(id) as b FROM table) SELECT * FROM table WHERE id>@t ORDER BY id LIMIT 1;
Взгляните на эту интересную статью:
Msgstr "Не использовать ORDER BY RAND ()" или "Как получить случайные строки из таблицы?"
Вы можете заказать случайным образом и ограничить до 1 строки следующим образом:
select author, authortext, date from bookstable order by rand() limit 1