如何合并时间戳和限制为id的行,然后循环它然后创建第二个表,它是合并行的结果数据(在第一个表上)?
id | data | time --------------------------------------- 100 | 4 | 2012-02-01 08:00:00 99 | 3 | 2012-02-01 07:59:00 98 | 2 | 2012-02-01 07:58:00 97 | 3 | 2012-02-01 07:57:00 . . 2 | 3 | 2012-01-31 11:02:00 1 | 2 | 2012-01-31 11:01:00 100 | 4 | 2012-01-31 11:00:00 99 | 3 | 2012-01-31 10:59:00 98 | 3 | 2012-01-31 10:58:00 97 | 3 | 2012-01-31 10:57:00 . . . etc.
如果我想将id = 100的行合并为1,并将id = 100的另一行再次合并为时间戳信息,请创建一个新的表格,如下所示:
id | data | time --------------------------------------- 1 | 4,3,2,3,..3,2 | 2012-02-01 08:00:00 2 | 4,3,3,3,.. | 2012-01-31 11:00:00 . . etc.
字段'data'正在从第一个表的字段'data'收集数据 字段'time'是第一个表中字段'time'对id = 100的每个限制的信息时间
答案 0 :(得分:0)
这比我想象的要难一点,但现在是:
SELECT group_concat(data ORDER BY time DESC) data, max(id) aTime
FROM (
SELECT CASE WHEN id = 100 THEN time END id, data, time,
@group := @group + (id = 100) aGroup
FROM t, (SELECT @group := 0) init
ORDER BY time DESC
) s
GROUP BY aGroup
输出:
| DATA | ATIME |
|-------------|----------------------------|
| 4,3,2,3,3,2 | February, 01 2012 08:00:00 |
| 4,3,3,3 | January, 31 2012 11:00:00 |
小提琴here。
请注意,结果中的id
列不清楚其来源,也似乎没必要。