SQL ОБНОВЛЯЕТ несколько строк совпадающих данных между двумя таблицами

#mysql #sql

Вопрос:

Я пытаюсь UPDATE использовать MySQL Table1 с данными Table2, столбец CODE которых является уникальным идентификатором между таблицами.

Таблица 1

код кол-во
A 10
B 15
C 20

Таблица 2

код кол-во
B 10
C 5

Желаемый результат-данные таблицы QTY 1 добавляются (не заменяются) таблицей QTY 2 для сопоставления кодов между двумя таблицами.

Я попробовал ниже, однако это не дает ожидаемого результата и выдает синтаксическую ошибку.

 UPDATE Table1 set QTY=(QTY  
SELECT IF(QTY IS NULL or QTY = '', '0', QTY) 
from Table2)
 

Очевидно, что мои знания ограничены в SQL, так как я все еще учусь, буду признателен, если кто-нибудь сможет помочь.

Ответ №1:

Вы можете использовать join . Я бы рекомендовал агрегировать данные перед присоединением:

 update table1 t1 join
       (select t2.code, sum(t2.qty) as qty
        from table2 t2
        group by t2.code
       ) t2
       using (code)
    set t1.qty = t2.qty   t1.qty;
 

Сначала агрегирование гарантирует получение ожидаемых результатов, если несколько строк table2 содержат один и тот же код. Если вы знаете , что коды уникальны table2 , вы можете просто использовать join :

 update table1 t1 join
       table2 t2
       using (code)
    set t1.qty = t2.qty   t1.qty;