所以,我需要根据时间选择数据进行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);
谢谢
答案 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个最新行。有一个时间索引或(状态,收藏,时间)加速它是一个非常好的主意。