我有一个关于mysql的表,其中包含大量的数据(例如> 10000),将所有数据加载到Java然后绘制图形似乎相当慢。我想得到几个点来绘制图形,但我不知道如何。比如,每10或100行获取数据。有什么想法吗?
答案 0 :(得分:2)
如果你有一个自动增量字段,你只需使用余数(mod)选择每10或100行:
SELECT actor_id, last_name FROM actor WHERE MOD(actor_id, 10) = 0;
您还可以为每一行添加一个行号,并将结果限制在:
SELECT actor_id, last_name, row_number FROM
(SELECT actor_id, last_name, @currentRow := @currentRow + 1 AS row_number FROM
actor JOIN (SELECT @currentRow := 0) Row) Data
WHERE MOD(row_number, 10) = 0;
很酷的行号技术是Daniel Vassallo。 With MySQL, how can I generate a column containing the record index in a table?
祝你好运:)答案 1 :(得分:1)
或者您可以将整个间隔min(x) - max(x)除以N个间隔,并且每个间隔只得到一个平均点。例如(这里有10个区间)这样的东西:
select round((x-@minx)/@step),avg(y) from PLOT_DATA,
(select @minx:=min(x),
@maxx:=max(x),
@intervals:=10, /*separated intervals count*/
@step:=(@maxx-@minx)/@intervals
from PLOT_DATA) t
group by round((x-@minx)/@step)
order by round((x-@minx)/@step)