我有一个问题/答案系统,并试图记录回答问题时的响应时间。
我正在使用的INSERT
代码的简单代码段:
INSERT INTO questions (responsetime, {otherfields})
(SELECT Now-msgDateTime, {otherfields} FROM questions WHERE headerid='This_Header_id' ORDER BY id DESC LIMIT 1)
对于线程中的所有辅助消息,这绝对可以正常工作,但是对于线程中的第一条消息,它将具有新的唯一
HeaderId
,因此可以进行查询(SELECT * FROM questions WHERE headerid='This_Header_id')
将不返回任何值。在这种情况下,我的第一个SQL更新将不会
INSERT
新行。那么,我该如何编写后备代码以将插入到
responsetime
字段,其中headerid
选择的行是NULL
? 最佳答案
您应该能够使用像MAX这样的分组函数,该函数将返回null或匹配值。如果有更好的方法,不妨看看其他答案,但怀疑这对您有用。
INSERT INTO questions (responsetime, {otherfields})
(SELECT IF(ISNULL(MAX(headerid)), 0, Now-msgDateTime)
, {otherfields}
FROM questions WHERE headerid='This_Header_id'
ORDER BY id DESC
LIMIT 1
)
关于mysql - 从另一行插入值和句柄行不存在。 MySQL插入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39836199/