Mysql 在同一表中插入select中的值

Mysql 在同一表中插入select中的值,mysql,mysql-insert-id,Mysql,Mysql Insert Id,表:消息[id、用户名、用户id、消息、类型、时间差、时间戳] 我有一张叫做“信息”的桌子。当消息启动时,将创建一个新行,其时间戳和timediff为null 当消息结束时,我想将其插入到一行中,并显示时间差 例如Start1,username,1234,message,Start/s,null,000001End:2,username,1234,message,End/s,**20**,000021 INSERT into Messages.message (username,userid,m

表:消息[id、用户名、用户id、消息、类型、时间差、时间戳]

我有一张叫做“信息”的桌子。当消息启动时,将创建一个新行,其时间戳和timediff为null

当消息结束时,我想将其插入到一行中,并显示时间差

例如Start
1,username,1234,message,Start/s,null,000001
End:
2,username,1234,message,End/s,**20**,000021

INSERT into Messages.message (username,userid,message,type,timediff) 
values ("username","1234","Test","Ended/S",(
    select sum(unix_timestamp(CURRENT_TIMESTAMP())-unix_timestamp(timestamp))
    from messages
        WHERE userid = "1234" 
        AND type = "Started/S"
        Order by timestamp desc
        limit 1))
我也有一个错误,我无法理解
错误代码:1093。无法在FROM子句中为更新指定目标表“消息”

对于这样的查询,最好使用语法。我认为这样做应该奏效:

insert into message (id, username, userid, message, type, timediff)
select id, username, userid, message, 'Ended/S', unix_timestamp() - unix_timestamp(tstamp)
from message m
where tstamp = (select MAX(tstamp) 
                from message m1 
                where m1.userid=1234 and m1.type='Started/S');

我已经做了一个小的演示,您可以在哪里看到它的运行。

这几乎是不够的信息,除此之外,您还没有在这里提出任何问题。对于sql问题,请始终提供模式和预期结果的示例,如果您需要查询方面的帮助,请向我们展示您尝试过但不起作用的内容,以便有人能够提供帮助。感谢您只需要“m”;-)@JamesCoombes如果你没有用这个作为答案,你应该把你用过的作为答案,然后接受它。