我正在尝试更新公司数据 我有一个大数据的三张桌子
表名称:帐户
id | balance | currency_id
1 7000 7
2 100 7
3 6000 6
表名:成员
id | email
1 ted@gmail.com
2 tom@gmail.com
表名称:基金
email | balance
ted@gmail.com 7000
tom@gmail.com 8000
如何使用Fund.balance中的currency_id = 7和Member.email = Fund.email的值更新Accounts.balance
如上所述
以该电子邮件“ tom@gmail.com”为例,如何从帐户表中更新account.balance从100以平衡新值8000?
我的问题是,仅在基金表中的电子邮件中没有与会员表中相同的ID,因此我们必须使用电子邮件而不是ID进行检查。
答案 0 :(得分:1)
您可以使用INNER JOIN从基金更新“帐户”表中的值。确保表“会员和基金”中有相关数据。
注意:首先尝试使用包含测试数据的脚本。
UPDATE Accounts AS A
INNER JOIN Members AS M ON A.ID = M.ID
INNER JOIN Fund AS F ON M.email = F.email
SET A.balance = F.balance
WHERE A.currency_id =7
如果对于Currency_id = 7,有可能在Fund表中没有数据,并且如果您希望保留旧值,则可以使用下面的case-
SET A.balance = CASE WHEN F.balance IS NULL THEN A.balance ELSE F.balance END