如何根据最后日期更新MySQL列
假设我有两张桌子 表1如何根据最后日期更新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
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。