将其他表的值添加到 h2 中当前表的值
Posted
技术标签:
【中文标题】将其他表的值添加到 h2 中当前表的值【英文标题】:Adding value from other table to value of the current table in h2 【发布时间】:2019-10-11 14:52:26 【问题描述】:我有一张桌子medicine
,还有一张桌子cart
。两者都有一个字段名称quantity
和id
。
如果id
相等,我想将cart.quantity
添加到medicine.quantity
由于我正在将代码从 mysql 转换为 h2,因此我尝试了使用 MODE=MySQL 的 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)
当 id 匹配时,我希望输出是数量的总和
但是在执行更新操作后,我在 medicine.quantity
中为所有行获取 NULL 值。
什么可以改变,使medicine.quantity
在没有id匹配时保持不变,或者在id匹配时添加cart.quantity
?
【问题讨论】:
【参考方案1】:该更新语句正在更新表中的所有记录。所以med1.quantity
字段将更新为 NULL,如果购物车表中没有 ID 记录。
你应该在 so 之后添加一个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)
【讨论】:
【参考方案2】:我使用 where exists 解决了它
set quantity = quantity +
(select quantity from cart where id = med1.id)
where exists (select quantity from cart where id = med1.id)"
【讨论】:
以上是关于将其他表的值添加到 h2 中当前表的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用临时表的情况下检索当前行和先前行的值之间的值差异?
为什么我的Python脚本将Postgres表的所有行设置为相同的值?
oracle中如何对多张表进行动态选择查询?使用表名和列名作为其他表的值?