mysql - 什么是插入查询取决于同一张表中的先前数据?
问题描述
如果它的一个特定列值仍然不可用,我想插入一行。如果可用,我想更新该行。否则会正常插入。该任务的 SQL 查询应该是什么?
例如:id、Product_id、user_id、数量是表的属性
考虑到,[1, 450, 56, 2] 在表中。
如果我想插入 [2,450,56,3] 那么它不会创建新行。它将更新上一行。像 [1,450,56,5]。
解决方案
我将首先对product_id
and的组合创建一个唯一约束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);
推荐阅读
- pine-script - 具有两个以上超趋势的 PineScript
- java - “多对一”属性类型不应是容器
- javascript - 如何使用预请求脚本邮递员添加查询参数以发送请求 url?
- windows-terminal - 如何在 Powershell(Windows 终端)中运行特定命令打开新选项卡?
- python - 无法在 Python 脚本中从 `if __name__ == "__main__"` 返回值?
- reactjs - React Admin dataProvider为“更新”返回了一个空响应
- c - 创建一个 C 程序,确定 2021 年给定月份的第一个日期的星期几
- xamarin - CollectionView 中的 Xamarin 更新数据不起作用
- javascript - 使用 setstate 更改字典,但不起作用。反应
- c# - 如何在 C# 中动态获取 LIST<> 中的多个字段的用户输入,而不是像我在下面的代码中那样进行硬编码?