愚蠢但简单的示例:假设我有一个表“ Item”,其中保存接收到的项目的总数。
Item_Name Items_In_Stock 项目名称是此处的主键。每当我收到数量为X的物料A时,如何实现以下目标。
如果该商品不存在,则为商品A插入一个新的摘要,并将库存商品设置为X;如果存在一条记录,其中库存商品为Y,则库存商品的新值为(X + Y)
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' ) 我的问题是我的实际表中有多个列。在更新部分中编写多个select语句是一个好主意吗?
我当然可以用代码完成,但是有更好的方法吗?
如我的评论中所述,您不必进行子选择即可引用导致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 请记住,大多数事情都是非常简单的,如果您发现自己过于复杂化了一些本来应该简单的事情,那么您很可能会以错误的方式进行操作:来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。