2011-12-19 4 views
4

У меня есть таблица mysql с именами событий. Некоторые события представлены. Я хочу случайным образом отобразить одно из двух последних признанных событий. В поле «timestamp» содержится временная метка UNIX времени создания события.Показать mysql random result

Запрос будет выглядеть так:

$query = "SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2;"; 

Есть ли способ, чтобы синтаксис запроса для возврата только один из этих двух событий и отображать его сразу же, или я должен идти вокруг него с PHP?

Что здесь рекомендуется?

ответ

13

Используйте ORDER BY RAND() LIMIT 1;, согласно MySQL documentation for RAND() (в нижней части пояснения). Я не уверен, что вы можете сделать это без вложенности, но это не должно быть так дорого, учитывая, что ваша вложенная таблица имеет только 2 строки.

SELECT * FROM 
    (SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2) 
ORDER BY RAND() LIMIT 1; 
+0

является то, что запрос в запросе? – ppp

+0

@AnPel Да, так называемый подзапрос. – middus

+1

Хорошо. Тогда я сделаю этот стиль. TY для вашего времени. – ppp

0

Try:

SELECT * FROM 
    (SELECT * FROM EVENTS WHERE featured = 1 ORDER BY `timestamp` DESC LIMIT 2) AS temp 
ORDER BY RAND() LIMIT 1 
+0

Спасибо за ваше время, это был правильный ответ. Поскольку в другой содержится более подробная информация, я исправил ее. – ppp