我的任务是修复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中处理单行来完成它?
答案 0 :(得分:2)
我们需要有关什么不起作用的详细信息,但我认为您只需要使用:
UPDATE TablePeople
SET missingdate = (SELECT MAX(te.replacementDate)
FROM TABLEEVENT te
WHERE te.people_id = TablePeople.id)
WHERE missingdate IS NULL