如何用来自第三张表的条件更新来自另一张表的特定值的表

时间:2019-05-26 12:47:03

标签: mysql sql

我正在尝试更新公司数据 我有一个大数据的三张桌子

表名称:帐户

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进行检查。

1 个答案:

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