#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;