MySQL - 如何使用另一个表中的值更新表?

时间:2010-08-01 22:51:02

标签: mysql sql sql-update

我的任务是修复mysql数据库中的一些无效数据。在一个表中,有人缺少日期,应该从第二个表填写,如果有相应的条目。

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

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 个答案:

答案 0 :(得分:2)

我们需要有关什么不起作用的详细信息,但我认为您只需要使用:

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

备注

  • MAX用于返回最新的替换日期,因为您担心从子查询中获取多个值的风险
  • 如果TABLEEVENT中没有支持记录,它将返回null,因此没有变化