如何使用从另一个 table 计算的数据更新 table

How do you update a table with data calculated from another table

我正在尝试用加入日期更新 table 个用户帐户,table 是一对 many/none 集合。对于成员加入的每个公会,members_guild table 将有 1 个或多个条目,我想用最早的日期更新 members table。我做了一个dbfiddle来帮忙解释一下

如您所见,有 3 个用户,user3 不再属于任何公会,但我想将他们保留在数据库中以进行记录,他们的创建日期现在可以设置为 1970 (我稍后会手动修复它们)并且 user1 在 2 个公会中,应该将它们的 members.created 设置为 2018-05-08 05:22:38

https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=1d78120e695544cbd9dcece976c82f16

我已经在 fiddle 中尝试了 UPDATE 但它不起作用,我假设我需要执行子查询或分组依据但从未在更新语句中完成它们

谢谢

试试这个 -

update members t1
inner join (select account, min(date_joined) date_joined from members_guild group by account) t2 
on t1.account = t2.account 
set t1.created = t2.date_joined

如果存在,用 min() 更新 members.created,否则保持原样。

UPDATE `members` m
SET m.created = coalesce(
      (SELECT MIN(mg.date_joined) 
      FROM `members_guild` mg
      WHERE m.account = mg.account), m.created) ;