我有一个MySQL表,每个用户大约有3000行.其中一列是datetime字段,它是可变的,因此行不按时间顺序排列.
我想在图表中可视化时间分布,因此我需要一些单独的数据点.20个数据点就足够了.
我能做到这一点:
select timefield from entries where uid = ? order by timefield;
Run Code Online (Sandbox Code Playgroud)
每隔150行看一下.
或者我可以做20个单独的查询并使用limit 1和offset.
但必须有一个更有效的解决方案......
Michal Sznajder几乎拥有它,但你不能在SQL的WHERE子句中使用列别名.所以你必须将它包装为派生表.我尝试了这个,它返回20行:
SELECT * FROM (
SELECT @rownum:=@rownum+1 AS rownum, e.*
FROM (SELECT @rownum := 0) r, entries e) AS e2
WHERE uid = ? AND rownum % 150 = 0;
Run Code Online (Sandbox Code Playgroud)