Как мне обновить MySQL столбец зависит от последней даты - PullRequest
2 голосов
/ 17 июля 2011

Допустим, у меня есть две таблицы

table_1

ID  Name   Status
1   John   
2   Peter  
3   Smith  

table_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

Что такое правильное утверждение для обновления Status в table_1 в соответствиина UpdateDate на table_2.

Результат должен быть таким

table_1

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 17 июля 2011
UPDATE table_1 SET Status = (
    SELECT Status FROM table_2
    WHERE UID = table_1.ID
    ORDER BY UpdateDate desc
    LIMIT 1
    );
0 голосов
/ 17 июля 2011

Чтобы получить статус для каждого UID:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...