2010-12-03 70 views
2

我在MySQL中有2个表,称他们的帐户,并注意:MySQL的:获取记录在另一个领域,其最大的价值是低于某一阈值

Account 
- Id 
- Available (bool) 

Note 
- Id 
- When (DateTime) 
- AccountId (FKey) 

我想更新其账户最近的注意低于某个阈值(比如90天前)。在SQL,我想类似如下(这显然是行不通的,由于最大的工作方式)

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

有谁知道的方式做到这一点?

+0

确实需要'max()'吗? – Sathya 2010-12-03 21:55:05

回答

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) 
    ); 
+1

+1我认为你甚至不需要在你的版本中执行INNER JOIN。 – 2010-12-03 21:55:46