我有一个问题/答案系统,我正在尝试记录回复问题的响应时间。
我正在使用的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
新行。
那么如何编写一个后备来插入' 0'进入responsetime
字段,headerid
选择的行是NULL
?
答案 0 :(得分:0)
您应该能够使用像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
)