显示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;
答
尝试:
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
是一个查询中查询? – ppp 2011-12-19 01:53:22
@AnPel是的,一个所谓的子查询。 – middus 2011-12-19 01:56:42
好的。那么我会做起始式。 TY为你的时间。 – ppp 2011-12-19 01:58:57