PHP / MySQL按日期排序&随机

时间:2014-11-25 09:21:17

标签: php mysql random

我使用此代码使用PHP从数据库中获取结果:

$get_article_sql = "SELECT * FROM articles ORDER BY added DESC LIMIT 8";
$get_article_res = mysqli_query($con, $get_article_sql);
while($article = mysqli_fetch_assoc($get_article_res)){
...
}

然而,我真正想做的是随机化结果 - 所以,我得到最新的8篇文章,然后将这些结果随机化 - 有点像:

$get_article_sql = "SELECT * FROM articles ORDER BY added DESC RAND() LIMIT 8";

显然这会产生一个提取错误但是有没有实际的方法呢?

3 个答案:

答案 0 :(得分:3)

您可以在PHP中将它们随机播放,这可能更快,一旦您获得了所有结果就可以使用shuffle($array),或者您可以使用查询但是您必须基本上使用子查询来在查询中获取总结果,其中包含其他内容。

这样的事情:

SELECT * FROM ( SELECT * FROM articles ORDER BY added DESC LIMIT 8 ) ORDER BY RAND()   

答案 1 :(得分:0)

试试这个:

$sql = "SELECT * FROM (SELECT * FROM articles order by article_id DESC LIMIT 8) `table` ORDER BY RAND()"

答案 2 :(得分:0)

编辑:经过测试,它不会在第一次查询后随机化。我想的越多,似乎你想要随机记录然后ORDER BY added?在这种情况下,需要子查询。

SELECT * FROM (SELECT * FROM articles ORDER BY RAND() LIMIT 8) AS random 
ORDER BY added DESC;

<强> New SQLFiddle