2014-11-29 2 views
0

Надеюсь, вы можете помочь мне с правильным синтаксисом 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

Вы получаете эту ошибку, потому что ваш подзапрос возвращает более 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; 
+0

Вы являетесь крейааазы! Это было невероятно .. Это сработало сэр! Спасибо огромное! Надеюсь, ты поможешь большему числу таких людей, как я .. Большое вам спасибо! oh .. 1 вопрос, я могу просто вставить это в триггер после обновления правильно? –

+0

@MarkJuni, если вы имеете в виду размещение того же UPDATE-оператора в триггере, то да, вы можете. Подумайте, принимая ответ, если он будет полезен. – Rahul

+0

Еще раз спасибо .. Прошу прощения, если я беспокою вас. Сэр, у меня есть последний вопрос, если я удалю имя_источника в основных учетных записях, какой синтаксис триггера должен удалить, чтобы удалить определенную запись «account_name» из платежей? Большое вам спасибо, вы спасли меня много времени ... Вы сделали свой день. : D: D –

Смежные вопросы