У меня есть таблица mysql с именами. Некоторые события представлены. Я хочу случайным образом отобразить одно из двух последних признанных событий. В поле «timestamp» содержится временная метка UNIX времени создания события.
Теперь запрос выглядит так:
$query = "SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2;";
Есть ли способ синтаксиса запроса, чтобы вернуть только одно из этих двух событий и отобразить его сразу, или мне нужно обойти его с помощью php?
Что здесь рекомендуется?
Используйте ORDER BY RAND() LIMIT 1;
, согласно документации MySQL для RAND()
(в нижней части пояснения). Я не уверен, что вы можете сделать это без вложенности, но это не должно быть так дорого, учитывая, что ваша вложенная таблица имеет только 2 строки.
SELECT * FROM (SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2) ORDER BY RAND() LIMIT 1;
Пытаться:
SELECT * FROM (SELECT * FROM EVENTS WHERE featured = 1 ORDER BY `timestamp` DESC LIMIT 2) AS temp ORDER BY RAND() LIMIT 1