MySQL - Как я могу обновить таблицу со значениями из другой таблицы? - PullRequest
2 голосов
/ 02 августа 2010

У меня есть задача восстановить некоторые неверные данные в базе данных mysql.В одной таблице есть люди с отсутствующей датой, которую следует заполнить из второй таблицы: , если - соответствующая запись.

TablePeople: ID, MissingDate, ...
TableEvent: ID, people_id, replaceDate, ...

Update TablePeople 
   set missingdate = (select replacementDate 
                        from TableEvent 
                       where people_id = TablePeople.ID)   
where  missingdate is null  
  and (select count(*) 
         from TableEvent 
        where people_id = TablePeople.ID) > 0

Конечно не работаетЕсть ли другой способ с SQL?Или как я могу обработать отдельные строки в MySQL, чтобы сделать это?

1 Ответ

2 голосов
/ 02 августа 2010

Нам нужны подробности о том, что не работает, но я думаю, что вам нужно только использовать:

UPDATE TablePeople 
   SET missingdate = (SELECT MAX(te.replacementDate)
                        FROM TABLEEVENT te
                       WHERE te.people_id = TablePeople.id)   
 WHERE missingdate IS NULL

Примечания * * 1004 MAX используется для возврата последней даты замены, из-за страха риска получить несколько значений из подзапроса Если в TABLEEVENT нет вспомогательной записи, она вернет ноль, поэтому изменений нет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...