我有一张表time
表结构和数据如下
name program start stop length
li football 15:23:09 15:23:50 41
you football 15:23:09 15:23:50 41
li football 15:23:52 15:24:50 58
li football 15:24:52 15:25:09 17现在我要做的就是把name、program相同的记录,如果它们的开始时间与结束时间
相差很小(小于5秒),我们就把二条记录进行合并成一条记录。例如
li football 15:23:52 15:24:50 58
li football 15:24:52 15:25:09 17
应该是li football 15:23:52 15:25:09 77上面的表最后变成
name program start stop length
li football 15:23:09 15:25:09 120
you football 15:23:09 15:23:50 41数据量比较的大 希望大家给出一些高效的语句
补充问题:
如果上面加上一个唯一的字段id,把name、program相同的记录,如果它们的开始时间与结束时间
相差很小(小于5秒),进行合并成该怎么做?

解决方案 »

  1.   

    start、stop什么类型
    select name,program,min(start),max(stop),TIMEDIFF(max(stop),min(start))
    from tt group by name,program
      

  2.   

    start、stop是时间类型、yyyy-mm-dd,hh-mm-ss
      

  3.   

    大概我说的不清楚把 如果一条记录的结束时间与另外一条的开始时间相差5秒以内的进行合并,否则的话就是原来的形式。 你这样做的话就把所以name、program相同的记录进行合并了 
      

  4.   

    如果多条呢?
    比如第一条15:23:09 15:23:50 
    15:23:12 15:23:54
    15:23:16 15:23:58
    ..这样会产生递归你如何处理?   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  5.   


    你要求的结果 是 相差5秒以内?应该是li football 15:23:52 15:25:09 77li football 15:23:09 15:23:50 41
    li football 15:24:52 15:25:09 17
      

  6.   

    li football 15:23:52 15:24:50 58
    li football 15:24:52 15:25:09 17
    应该是li football 15:23:52 15:25:09 77这是相差5秒?是1分钟,77怎么得到的