mysql - 如果 id 未知则添加记录,否则更新记录

标签 mysql sql mariadb

我在 mariadb 中有下表:

-id = 自动递增的键 -价格 -数量 -姓名 -order_id

order_id 可以在表中出现两次,但名称和 order_id 的组合应该是唯一的。我现在有了 name 和 order_id 的组合。

我想要做的是,如果 name 和 order_id 的组合不在表中,则添加一条记录。 如果它在,那么我想更改/获取金额值。

有一个很好的查询来完成这个任务吗?

问候

最佳答案

我喜欢为此使用重复 key 更新。您需要首先在 nameorder_id 上创建唯一索引:

create unique index ix_table_orderid_name on table(order_id, name);

然后插入看起来像:

insert into table(price, amount, name, order_id)
    values (@price, @amount, @name, @order_id)
    on duplicate key update amount = values(amount), price = values(price);

这会将表中的值替换为新值。您也可以增加它们。您的问题不清楚具体的操作。

关于mysql - 如果 id 未知则添加记录,否则更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28518748/

相关文章:

java - 查询两张表的外键

mysql - 使用 roll up、order by 和 group by 内连接两个表

sql - 从该表中的多个列中选择一次不同值,保留原始顺序吗?

php - 在没有 group_concat 的情况下连接 symfony/doctrine/mysql 中的行

mysql - 尝试为大型表的列添加全文搜索时,XAMPP 的 MariaDB 挂起

MySQL基于组的自增

mysql - 如何从两个表中选择数据,其中一个表包含多个带有ID的列

Kubernetes 中的 MySQL 路由器即服务

c# - 当 ExecuteScalar 工作正常时,为什么 ExecuteReader 会崩溃读取某些记录的特定数据字段?

sql - 推进 ORM : How to use own brackets in where clause