如何获得最后10然后显示随机5

时间:2015-09-02 06:43:59

标签: php mysql

你好,我是一个php开发人员,现在我有一个简单的问题,比如我想从我的数据库表中获取最后10个数据,然后随机显示5个。

请参阅下面的代码。

$random=rand(0,18);
mysqli_query(
    $connection,
    "SELECT something1,something2 
     FROM `table` 
     where (id !='0') 
     ORDER BY time DESC 
     LIMIT 4 OFFSET $random");

此查询从18个中选择最后4个更新的字段,但我想要一个更好的解决方案

3 个答案:

答案 0 :(得分:7)

首先,定义"最后10&#34 ;;现在让我们假设按时间排序的最后十个。所以,实际上这是第一个十,当我按顺序订购它们时(我猜你有那个):

<?php
$last_10_rows = mysqli_query($connection, "simple query to get last 10 rows");
shuffle($last_10_rows); // randomize the array
$random_5_rows = array_slice($last_10_rows, 0, 5); // take first 5
?>

然后我们再次选择随机化和限制:

SELECT * FROM `table` WHERE (id != '0') ORDER BY time DESC LIMIT 10;

请记住,您的数据库非常功能强大且速度快,可用于任何数据处理。

答案 1 :(得分:0)

如果您更喜欢随机使用PHP,可以使用PHP shufflearray_slice

move

对于

答案 2 :(得分:0)

不确定Select有一个很好的解决方案。您的样本连续使用OFFSET连续4行,这不是真正的随机选择。你应该将你的select限制为10,然后通过另一个php代码获得10行中的5行。

$rows = mysqli_query($connection,
    "SELECT something1,something2 FROM `table` where (id !='0') 
     ORDER BY time DESC LIMIT 10");

//then, get 5 random key from your array of row from the mysql select
$rand_keys = array_rand($rows, 5);