我有一个名为events的mysql表。一些活动是特色。我想随机显示两个最新的特色事件之一。字段'timestamp'保存事件创建时间的UNIX时间戳。
查询现在看起来像这样:
$query = "SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2;";
有没有办法让查询语法只返回这两个事件中的一个并立即显示,或者我应该用php解决它?
这里建议什么?
答案 0 :(得分:15)
根据MySQL documentation for RAND()
使用ORDER BY RAND() LIMIT 1;
(在说明底部附近)。我不确定你是否可以在没有嵌套的情况下完成它,但鉴于你的嵌套表只有2行,它不应该是那么昂贵。
SELECT * FROM
(SELECT * FROM events WHERE featured = 1 ORDER BY timestamp DESC LIMIT 2)
ORDER BY RAND() LIMIT 1;
答案 1 :(得分:0)
尝试:
SELECT * FROM
(SELECT * FROM EVENTS WHERE featured = 1 ORDER BY `timestamp` DESC LIMIT 2) AS temp
ORDER BY RAND() LIMIT 1