【问题标题】:Having MySQL error #1242出现 MySQL 错误 #1242
【发布时间】:2018-06-27 08:27:10
【问题描述】:

问题是从有贷款和储蓄账户的储蓄账户余额中扣除1%的服务费。

架构是

“分支”表(分支名称、分支城市、资产)

“客户”表(客户名称、客户街道、客户城市)

“账户”表(account_number、branch_name、balance)

“贷款”表(loan_number、branch_name、amount)

“存款人”表(customer_name、account_number)

“借款人”表(customer_name、loan_number)

我试过这个:

update account
-> set balance=balance*0.99

-> where (select distinct customer_name from 

->borrower where customer_name in(select 

->customer_name from depositor));

但收到错误 1242。有人可以帮我解决这个问题吗?

【问题讨论】:

标签: mysql database mysql-error-1242


【解决方案1】:

表帐户没有对 customer_name 的任何引用。

这样试试

update account set balance=balance*99 where account_number in (select account_number from depositor); 

【讨论】:

  • 对不起,对于同时拥有贷款和储蓄账户的人,我需要扣除 1%。但是这个解决方案并没有检查这一点。只对有储蓄账户的人进行扣除。
【解决方案2】:

请使用 INNER JOIN 代替 where 子句。

update account
-> set balance=balance*0.99

-> where (select distinct borrower.customer_name from 

->borrower INNER JOIN depositor  ON borrower.customer_name = depositor.customer_name));

【讨论】:

  • 客户名称不存在于帐户中,这就是它收到错误 1054 的原因。
  • 能否请您删除并执行
  • 我试过了,但这次又出错了 error 1052
  • 很抱歉,它现在显示出与我最初遇到的相同的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多