gpt4 book ai didi

mysql - 如何执行 UPSERT 以便我可以在更新部分同时使用新值和旧值

转载 作者:IT老高 更新时间:2023-10-28 12:54:38 25 4
gpt4 key购买 nike

愚蠢但简单的例子:假设我有一个表“项目”,其中保存了收到的项目的总数。

Item_Name              Items_In_Stock

这里的项目名称是主键。当我收到数量 X 的元素 A 时,我如何实现以下目标。

如果该项目不存在,我为项目 A 插入一个新记录并将库存项目设置为 X,如果存在库存项目为 Y 的记录,则库存项目的新值为 (X +是)

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A' )

我的问题是我的实际表中有多个列。在更新部分写多个选择语句是个好主意吗?

我当然可以在代码中做到这一点,但有更好的方法吗?

最佳答案

正如我在评论中提到的,您不必执行子选择来引用导致 ON DUPLICATE KEY 触发的行。因此,在您的示例中,您可以使用以下内容:

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = `new_items_count` + 27

请记住,大多数事情都很简单,如果你发现自己把本应该简单的事情复杂化了,那么你很可能做错了:)

关于mysql - 如何执行 UPSERT 以便我可以在更新部分同时使用新值和旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6107752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com