Ответ 1
Неправильно. Вы не можете упорядочить по столбцу (afaik), если хотите, чтобы он был рандомизирован.
$query = 'SELECT * FROM gameids ORDER BY RAND() LIMIT 1';
Возможный дубликат:
Как запросить случайную строку в SQL?
Правильно ли это делается?
$query = 'SELECT * FROM gameids ORDER BY timestamp RAND LIMIT 1';
Неправильно. Вы не можете упорядочить по столбцу (afaik), если хотите, чтобы он был рандомизирован.
$query = 'SELECT * FROM gameids ORDER BY RAND() LIMIT 1';
Вам не нужно указывать, какой столбец рандомизирован, но вам нужно ()
после RAND
, потому что это функция.
SELECT
*
FROM
gameids
ORDER BY
RAND()
LIMIT 1
RAND - это функция и не эффективна в больших таблицах, потому что она не использует индексы.
$query = 'SELECT * FROM gameids ORDER BY RAND() LIMIT 1';
Одним из возможных решений является добавление столбца с именем random
, а для каждой записи генерирует случайное число для него, тогда, когда вы запрашиваете базу данных, заказывайте этот столбец, и вы получите псевдослучайное, но на этот раз с использованием индексов.
$query = 'SELECT * FROM gameids ORDER BY timestamp, random LIMIT 1';
Изменить:
Вы также можете сделать RAND()
более "гибким", применив некоторое выражение, подобное этому RAND() * MAX(numeric_column_name)
Если вы заинтересованы в оптимизации, взгляните на это сообщение в блоге: http://jan.kneschke.de/projects/mysql/order-by-rand/
@Marwelln правильно.