MySQL:获取其他字段中最大值低于某个阈值的记录

Ste*_*ers 2 mysql sql sql-update

我在MySQL中有2个表,称他们为账号并注意:

Account
- Id
- Available (bool)

Note
- Id
- When (DateTime)
- AccountId (FKey)
Run Code Online (Sandbox Code Playgroud)

我想更新最近记录低于某个阈值的帐户(比如90天前).在SQL中,我喜欢以下内容(由于max工作方式,显然不起作用)

UPDATE 
    Account INNER JOIN Note ON Account.Id = Note.AccountId
SET
    Account.Available = true
WHERE
    Max(Note.When) < DATE_ADD(NOW(), INTERVAL -90 DAY);
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的方法?

小智 5

未经测试,但我认为这会奏效.

UPDATE 
    Account
SET
    Account.Available = true
WHERE
    Id IN(
        SELECT 
            AccountId 
        FROM 
            Note 
        GROUP BY 
            AccountId 
        HAVING 
            Max(Note.When) < DATE_ADD(NOW(), INTERVAL -90 DAY)
    );
Run Code Online (Sandbox Code Playgroud)