Добавление значения из другой таблицы к значению текущей таблицы в h2 - PullRequest
0 голосов
/ 11 октября 2019

У меня есть таблица medicine, а другая таблица cart. Оба имеют имя поля quantity и id. Я хочу добавить cart.quantity к medicine.quantity, если их id равны

Поскольку я конвертирую код из MySQL в h2, я попробовал режим совместимости с MySQL, используя MODE = MySQL, но следующий код нене работает

update medicine, cart 
set medicine.quantity = medicine.quantity+cart.quantity 
where medicine.id = cart.id;

Я пытался использовать оператор select, как указано в официальной документации

update medicine med1 
set med1.quantity = med1.quantity+
                   (select cart.quantity from cart where cart.id = med1.id)

Я ожидал, что результат будет суммой количества, когда идентификаторы совпадают, но я получаю значение NULLв medicine.quantity для всех строк после выполнения операции обновления.

Что можно изменить, чтобы medicine.quantity не изменялся при отсутствии совпадения идентификатора или добавлялся с cart.quantity при совпадении идентификатора?

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Я решил, используя, где существует

set quantity = quantity +
                (select quantity from cart where id = med1.id) 
where exists (select quantity from cart where id = med1.id)"
0 голосов
/ 11 октября 2019

Этот оператор обновления обновляет все записи в таблице. Таким образом, поле med1.quantity будет обновлено до NULL, если в таблице корзины нет записей для идентификатора.

Вы должны добавить предложение WHERE после:

update medicine med1 
set med1.quantity = med1.quantity+
(select cart.quantity from cart where cart.id = med1.id)
where med1.id in (Select cart.id from cart)
...