我创建了一个选择查询,向我显示需要更新的正确行:
SELECT `subject`,`ticket_messages`.`ticket_ID` as t,
(SELECT `date` from `ticket_messages` where `ticket_ID`=t ORDER BY `date` DESC LIMIT 1) as d
from `ticket_messages`
LEFT JOIN `tickets` on `ticket_messages`.`ticket_ID`=`tickets`.`ticket_ID`
GROUP BY t
HAVING d<date_sub(curdate(), interval 5 day)
ORDER BY t
我将使用php,但首先在phpmyadmin中编写查询 正确的上述查询工作,并给我正确的行。 基本上它列出了超过5天的任何东西。不要担心我选择主题和日期,只有这样才知道我得到了正确的行。
问题是如何将其转换为更新查询? 我花了几个小时才完成这项工作。
我将更新的是:
UPDATE `tickets` SET `status`=?
基本上它会查看ticket_messages并找到最后一条消息。这是我的选择查询所做的,然后如果最后一个日期超过5天,它将在我的“票证”表中更新状态。这些表是参考链接的。
所以我需要一个子查询更新,我不知道这个。
好的,再添加一点。我试过这个
UPDATE `tickets` SET `status`=8
WHERE
(
SELECT `subject`,`ticket_messages`.`ticket_ID` as t,
(SELECT `date` from `ticket_messages` where `ticket_ID`=t ORDER BY `date` DESC LIMIT 1) as d
from `ticket_messages`
LEFT JOIN `tickets` on `ticket_messages`.`ticket_ID`=`tickets`.`ticket_ID`
GROUP BY t
HAVING d<date_sub(curdate(), interval 5 day)
ORDER BY t)!=null
如果它不等于null,我认为where子句会起作用。
答案 0 :(得分:1)
你的第一个查询,我不喜欢它,因为我真的不明白为什么你使用subSelect,为什么你使用group by。你想要什么约会?
无论如何你说你只想要超过5天的门票,
fill=0
这就是你第一次查询的全部内容。如果你得到相同的身份证明,请告诉我。
现在进行更新,你只需要加入:
library(data.table)
dcast(setDT(data), score~members, value.var= 'country', fun.aggregate = uniqueN, fill = 0)
# score 1 2 3 4 5 6 7
#1: 0 0 1 0 0 0 1 2
#2: 1 1 1 2 2 1 3 2
#3: 2 1 0 1 2 0 1 1