如何根据最后日期更新MySQL列

如何根据最后日期更新MySQL列,mysql,sql,Mysql,Sql,假设我有两张桌子 表1 ID Name Status 1 John 2 Peter 3 Smith ID Name Status 1 John C 2 Peter A 3 Smith C 表2 ID UID Status UpdateDate 1 1 B 2010-05-05 2 1 C 2011-03-02 3 3 C 2011-03-02 4 2

假设我有两张桌子

表1

ID  Name   Status
1   John   
2   Peter  
3   Smith  
ID  Name   Status
1   John   C
2   Peter  A
3   Smith  C
表2

ID  UID   Status  UpdateDate
1   1     B       2010-05-05
2   1     C       2011-03-02
3   3     C       2011-03-02
4   2     A       2011-03-02
根据
table_2
上的
UpdateDate
,更新
table_1
上的
Status
的正确语句是什么

结果应该是这样

表1

ID  Name   Status
1   John   
2   Peter  
3   Smith  
ID  Name   Status
1   John   C
2   Peter  A
3   Smith  C

谢谢。

要获取每个UID的状态:

UPDATE table_1 SET Status = (
    SELECT Status FROM table_2
    WHERE UID = table_1.ID
    ORDER BY UpdateDate desc
    LIMIT 1
    );
SELECT UID, Status
FROM (
  SELECT UID, MAX(UpdateDate) LastUpdateDate
  FROM table_2
  GROUP BY UID
) l
JOIN table_2 t ON t.UID = l.UID AND t.UpdateDate = l.LastUpdateDate
要更新:

UPDATE table_1 SET Status = l.Status
FROM table_1 t
JOIN (
  SELECT UID, Status
  FROM (
    SELECT UID, MAX(UpdateDate) LastUpdateDate
    FROM table_2
    GROUP BY UID
  ) l
  JOIN table_2 t ON t.UID = l.UID AND t.UpdateDate = l.LastUpdateDate
) l ON l.UID = t.ID

谢谢你,凯尔。我如何知道update将使用最新的
UpdateDate
@hmmmm-通过使用
ORDER By UpdateDate desc
您使用最新的日期-也很抱歉,我添加了
LIMIT
而不是
TOP
,现在我看到您正在使用MySQL。