2010-12-03 24 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

相關問題