我有一个问题/答案系统,并试图记录回答问题时的响应时间。

我正在使用的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/

10-13 01:59