I have a mysql table named events. Some events are featured. I want to randomly display one of the two latest featured events. The field ‘timestamp’ holds the UNIX timestamp of the event’s creation time.
The query looks like this now:
$query = "SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2;";
Is there a way to syntax the query to return just one of those two events and display it right away, or should I go around it with php?
What is recomended here?
ORDER BY RAND() LIMIT 1;, as per MySQL documentation for
RAND() (near the bottom of the explanation). I’m not sure if you can do it without the nesting, but it shouldn’t be all that expensive given that your nested table only has 2 rows.
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