匹配条件后,如何在一段时间后更新表?
tb_contest id race_id名称为is_expire 1101新0 2102旧0 tb_answer Competition_id answer_id日期 101 1 2012-02-02 101 2 2012-09-14 102 5 2012-06-01
我需要tb_contest在满足某些条件后进行更新,并is_expire=1在2天后根据收到的最新答案(即e)进行更新2012-03-14,因此tb_contest应在上进行更新2012-09-16。
tb_contest
is_expire=1
2012-03-14
2012-09-16
试试这个
UPDATE tb_contest a INNER JOIN ( SELECT contest_ID, MAX(`date`) maxDate FROM tb_answer GROUP BY contest_ID ) b ON a.contest_ID = b.contest_ID SET a.is_expire = 1 WHERE DATEDIFF(CURDATE(), b.maxDate) >= 2 AND a.is_expire = 0
如此看来,这两个表是由相连的,contest_ID并且具有的最新回答日期tb_answer。通过使用DATEDIFF()我们可以知道今天的日期和比赛的答案之间的差异。
contest_ID
tb_answer
DATEDIFF()