一尘不染

在一定时间间隔后如何更新表

mysql

匹配条件后,如何在一段时间后更新表?

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


阅读 214

收藏
2020-05-17

共1个答案

一尘不染

试试这个

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()我们可以知道今天的日期和比赛的答案之间的差异。

2020-05-17