在最后50个条目中仅选择5个随机行

时间:2016-07-03 14:42:30

标签: php mysql sql

我刚开始使用MySQL,所以我想知道我的数据库的最后50个条目中我只能select只有5个随机行吗?我希望你理解我的问题。

我正在使用PDO,我现在拥有的是:

$otherChoiseRig = $bdd->query("SELECT * FROM articulos WHERE cat = '$ArtCat' ORDER BY RAND()  ");
 $otherChoiseRig2 =  $otherChoiseRig->fetchAll(PDO::FETCH_ASSOC);

然后我使用PHP foreach循环...

谢谢

3 个答案:

答案 0 :(得分:2)

挑战在于确定最后50个条目。假设你有一个自动增加的id,你可以这样做:

SELECT a.*
FROM (SELECT a.*
      FROM articulos a
      WHERE cat = '$ArtCat'
      ORDER BY id DESC
      LIMIT 50
     ) a
ORDER BY RAND() 
LIMIT 5;

关键思想是获取最后50个条目的子查询,然后是获得5个随机行的最终查询。子查询需要指定如何识别最后50个。

答案 1 :(得分:0)

只需添加限制

我假设你的表中有一些日期栏,所以我们可以获得最后50个

SELECT * FROM(SELECT * FROM articulos WHERE cat =' $ ArtCat' ORDER BY created_tiem desc limit 50)t order by RAND()limit 5;

答案 2 :(得分:0)

$otherChoiseRig = $bdd->query("SELECT * FROM articulos WHERE cat = '$ArtCat' ORDER BY RAND() LIMIT 5 ");
$otherChoiseRig2 =  $otherChoiseRig->fetchAll(PDO::FETCH_ASSOC);