你好,我是一个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个更新的字段,但我想要一个更好的解决方案
答案 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)
答案 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);