带有while循环的MySQL Query

时间:2017-03-30 18:54:56

标签: mysql sql

所以,我需要根据时间选择数据进行MySQL查询。

1| SET @t = 1490894826;
2| SELECT id
3| FROM table
4| WHERE status=1 AND
5| fav>500 AND
6| time BETWEEN @t-86400 AND @t
7| LIMIT 10

我的问题是,我需要10行来自此查询,但如果它给了我7行(例如),如何设置我的查询一次又一次地执行它,而所选行的数量不是10或时间是大于1480531730,每次下载@t变量需要减去86400.对不起我的英文,看看我是如何用PHP做的,只是为了向你展示我真正想要的东西,我希望它会是更清楚。

$time=1490894826;
do{
   $query = $db->query("SELECT * FROM table WHERE status=1 AND fav>500 AND time BETWEEN ? AND ? LIMIT 10",[$time-86400,$time]);
   $time=$time-86400;
}while($query->rowCount()!=10||$time>1480531730);

谢谢

2 个答案:

答案 0 :(得分:2)

我建议你做这样的事情:

SET @t = 1490894826;
SELECT id
FROM table
WHERE status = 1 AND fav > 500 AND
      time <= @t
ORDER BY time DESC
LIMIT 10;

也就是说,删除BETWEEN,最近只取10次。

答案 1 :(得分:1)

试试这个:

SET @t = 1490894826;
SELECT id FROM table WHERE status=1 AND fav>500 AND
time <= @t
ORDER BY time DESC LIMIT 10

这将按降序时间排序,并为您提供有时间&lt; = @t的10个最新行。有一个时间索引或(状态,收藏,时间)加速它是一个非常好的主意。