mysql - 什么是插入查询取决于同一个表中的先前数据?

标签 mysql sql

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

例如: id, Product_id, user_id, quantity 是表的属性

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

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

最佳答案

我会首先对 product_iduser_id 的组合创建一个唯一约束(如果表上还没有主键,甚至可以创建一个主键) ):

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

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

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

关于mysql - 什么是插入查询取决于同一个表中的先前数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55790081/

相关文章:

sql - 缓存 SQL 查询

sql - 如何优化使用cte、group by并运行20+小时的SQL查询?

sql - 如何使用新列更新SQLite表?

mysql - 使用另一个表中的值更新表

php - PDO 绑定(bind)偏移量

mysql - SELECT 查询如何在多个列上工作而不在列名之间使用逗号?

mysql - 如何使 sql 查询在 mysql 中的日期范围内每天返回一行?

mysql - 不允许再次使用已使用的命令

mysql - MySQL 上的 LIKE 查询有多慢? (自定义字段相关)

java - Hibernate query.list() 需要很长时间才能响应