首页 > 解决方案 > 什么是插入查询取决于同一张表中的先前数据?

问题描述

如果它的一个特定列值仍然不可用,我想插入一行。如果可用,我想更新该行。否则会正常插入。该任务的 SQL 查询应该是什么?

例如:id、Product_id、user_id、数量是表的属性

考虑到,[1, 450, 56, 2] 在表中。

如果我想插入 [2,450,56,3] 那么它不会创建新行。它将更新上一行。像 [1,450,56,5]。

标签: mysqlsql

解决方案


我将首先对product_idand的组合创建一个唯一约束user_id(如果表上还没有主键,甚至是主键):

ALTER TABLE mytable
ADD CONSTRAINT uc_product_user UNIQUE (product_id, user_id);

然后您可以on duplicate在语句中使用该子句insert

INSERT INTO mytable
VALUES (2, 450, 56, 3)
ON DUPLICATE KEY UPDATE quantity = quantity + VALUES(quantity);

推荐阅读