table: id[key]
id  name age  t
1   kaka  12  20:00:00
2   lala  24  21:00:00
3   nana  22  12:23:32
4   yaya  21  14:34:23
把年龄大于20的数据选出在插入本表,并且t(时间类型)字段时间加10分钟.id  name age  t
1   kaka  12  20:00:00
2   lala  24  21:00:00
3   nana  22  12:23:32
4   yaya  21  14:34:23
5   lala  24  21:10:00
6   nana  22  12:33:32
7   yaya  21  14:44:23
能用一条sql语句写出来么?

解决方案 »

  1.   

    insert tb
    select id,name,age,date_add(t,interval 10 minute) 
    from tb
    where age>20
      

  2.   

    假设ID为自增:
    INSERT INTO TT(name,age,t)
    SELECT name,age,
    cast(
    concat(hour(t),':',minute(t)+10,':',second(t)) as time) as ntfrom tt where age>20
      

  3.   

    呵呵,楼主T字段是TIME型,不能直接加10,转换一下。
      

  4.   

    insert into table1(name,age, t) 
    select name,age, addtime(t,'00:10:00') from table1 where age >20
      

  5.   

    re:josyMySQL 返回: #1062 - Duplicate entry '3' for key 1 
    是不是把id也复制了,id是主键
    这么改下
    insert tb(name,age,date_add)
    select name,age,date_add(t,interval 10 minute) 
    from tb
    where age>20可以,就是插入的字段名要都写出来,还有没简单些的写法(只要去掉主键,其他的都插入就可以).
      

  6.   

    如果ID不是自增,只有用变量累计了INSERT INTO TT(name,age,t) 
    SELECT name,age, 
    addtime(t,'00:10:00') as nt 
    from tt where age>20
      

  7.   

    re:wwwwAId是主键且自增,看来只能把字段名都写出来了.实际有10多个字段,稍有点麻烦验证后,下面这个对于时间累计的方法是可以
    DATETIME要用date_add    TIME要用addtime insert into person(name,age,t,t2)
    select name,age,date_add(t,interval 10 minute),addtime(t2,'00:10:00') 
    from person
    where age>'20'