如何合并时间戳和限制的行并循环它?

时间:2013-12-03 04:02:53

标签: mysql sql database

如何合并时间戳和限制为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的每个限制的信息时间

1 个答案:

答案 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列不清楚其来源,也似乎没必要。