显示mysql随机结果

问题描述:

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

查询现在看起来是这样的:

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

有没有一种办法语法查询只返回这两个事件中的一个,并显示它了,或者我应该去周围用PHP?

这里推荐什么?

使用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 2011-12-19 01:53:22

+0

@AnPel是的,一个所谓的子查询。 – middus 2011-12-19 01:56:42

+1

好的。那么我会做起始式。 TY为你的时间。 – ppp 2011-12-19 01:58:57

尝试:

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

谢谢你的时间,这是正确的答案。由于另一个包含更详细的信息,我纠正了它。 – ppp 2011-12-19 04:58:52