我在 mysql 上有一个包含大量数据(如 >10000)的表,将所有数据加载到 Java 然后绘制图形似乎很慢。我只想得到几个点来绘制图形,但我不知道如何。比如,每 10 或 100 行获取数据。任何的想法?
问问题
82 次
2 回答
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 提出的。使用 MySQL,如何在表中生成包含记录索引的列?
祝你好运 :)
于 2012-09-03T14:05:56.500 回答
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)
于 2012-09-03T14:49:01.990 回答