显示mysql随机结果

时间:2011-12-19 01:43:55

标签: php mysql

我有一个名为events的mysql表。一些活动是特色。我想随机显示两个最新的特色事件之一。字段'timestamp'保存事件创建时间的UNIX时间戳。

查询现在看起来像这样:

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

有没有办法让查询语法只返回这两个事件中的一个并立即显示,或者我应该用php解决它?

这里建议什么?

2 个答案:

答案 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