如何使用从另一个 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) ;
我正在尝试用加入日期更新 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) ;