超强干货:Mysql 存在既更新,不存在就添加(sql语句)

发布网友 发布时间:2025-01-27 15:16

我来回答

1个回答

热心网友 时间:5分钟前

INSERT 语句结合 ON DUPLICATE KEY UPDATE 可在唯一索引或主键冲突时更新已有数据或插入新行。SQL 语句原型如上。

在设计抽奖程序时,需模仿王者荣耀钻石夺宝规则,即用户每次抽奖后幸运值增加1。若新增用户幸运值未变,需在新表中添加用户信息。

实现步骤如下:

1. 首先验证用户信息是否已存在。若不存在,直接添加新记录。

2. 若用户信息已存在,更新用户幸运值。

预防高并发下的问题,采用双层 SQL 操作。

原始 SQL 如下:

需求是当 uid 和 award_type 两个字段值完全一致时进行更新,否则添加新数据。

通过建立联合唯一索引(player_id, award_type)实现这一需求,确保只有当所有字段值完全相同时才进行更新。请注意,id 可能会跳号,这是由 MySQL 的实现机制所导致的。

另一种方法是使用 MySQL 的 REPLACE INTO 语句。此语句类似于 INSERT INTO,但其特点在于:1. 尝试插入数据到表中;2. 如果发现已有相同数据(通过主键或唯一索引判断),则先删除旧数据,再插入新数据;3. 若无重复数据,则直接插入新数据。

需注意,目标表必须包含主键或唯一索引,否则 REPLACE INTO 可能导致重复数据。MySQL REPLACE INTO 有三种基本形式,前两种更为常见。"into" 关键字可省略,但建议保留以增加语句的可读性。对于未指定值的列,MySQL 会自动为其设置默认值。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com