我希望你能帮助我使用正确的SQL语法。
main_accounts (table1)
'---id, group_name, account_name, payment_method
payments (table2)
'---id, account_name, payment_method
我要做的是更新account_name
表格中payment_method
等于payment_method
的付款中的main_accounts
行。
我试过了:
update payments
set account_name = (select account_name
from main_accounts
where payment_method = payment_method)
WHERE payment_method = payment_method
但它说:
#1242 - 子查询返回超过1行
所以我不知道......我希望我能做到这一点:
update payments
set account_name = (select account_name
from main_accounts
where payment_method = **{is equal to payment_method in main_accounts table}**
此外,我希望我可以将此作为触发器,当main_accounts
表更新时,account_name
自动转到payments table
,其中account_name
将打印到列当payment_method
与payment_method
中的main_accounts
匹配时。
答案 0 :(得分:0)
您收到该错误,导致您的子查询返回的值超过1,而SET
语句中无法使用该值。在执行JOIN
语句时,您应该使用其他表格UPDATE
。像
UPDATE payments a
JOIN main_accounts b ON a.payment_method = b.payment_method
SET a.account_name = b.account_name;