$query = 'SELECT * FROM gameids ORDER BY timestamp RAND LIMIT 1';
Ответ 1
Неправильно. Вы не можете упорядочить по столбцу (afaik), если хотите, чтобы он был рандомизирован.
$query = 'SELECT * FROM gameids ORDER BY RAND() LIMIT 1';
Ответ 2
Вам не нужно указывать, какой столбец рандомизирован, но вам нужно () после RAND, потому что это функция.
SELECT
*
FROM
gameids
ORDER BY
RAND()
LIMIT 1
Ответ 3
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)