更新行检查重复项

时间:2014-11-29 21:46:09

标签: mysql sql phpmyadmin

我希望你能帮助我使用正确的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_methodpayment_method中的main_accounts匹配时。

1 个答案:

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