1

我在 mysql 上有一个包含大量数据(如 >10000)的表,将所有数据加载到 Java 然后绘制图形似乎很慢。我只想得到几个点来绘制图形,但我不知道如何。比如,每 10 或 100 行获取数据。任何的想法?

4

2 回答 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 回答