我有一个
MySQL表,每个用户大约有3000行.其中一列是datetime字段,它是可变的,因此这些行不按时间顺序排列.
我想在图表中可视化时间分布,所以我需要一些单独的数据点. 20个数据点就够了
我可以这样做:
select timefield from entries where uid = ? order by timefield;
并看第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;