SQL——插入已经存在的数据

现在有一套ID为9003的高难度SQL试卷,时长为一个半小时,请你将 2021-01-01 00:00:00 作为发布时间插入到试题信息表examination_info(其表结构如下图),不管该ID试卷是否存在,都要插入成功,请尝试插入它。

|--------------|-------------|------|-----|----------------|---------|---------|
| Filed | Type | Null | Key | Extra | Default | Comment |
| id | int(11) | NO | PRI | auto_increment | (NULL) | 自增ID |
| exam_id | int(11) | NO | UNI | | (NULL) | 试卷ID |
| tag | varchar(32) | YES | | | (NULL) | 类别标签 |
| difficulty | varchar(8) | YES | | | (NULL) | 难度 |
| duration | int(11) | NO | | | (NULL) | 时长(分钟数) |
| release_time | datetime | YES | | | (NULL) | 发布时间 |

如果直接插入则会提示,数据表中已存在该exam_id,该如何处理呢?

难点:不知道该数据是否存在,若存在可用update,若不存在可用insert。

方案:采用replace语句

sql 复制代码
replace into examination_info(exam_id,tag,difficulty,duration,release_time)
values(9003,'SQL','hard',90,'2021-01-01 00:00:00')

参考: MySQL关于replace语句的文档

相关推荐
霖霖总总25 分钟前
[小技巧41]InnoDB 如何判断一行数据是否可见?MVCC 可见性机制深度解析
数据库·mysql
偷星星的贼111 小时前
数据分析与科学计算
jvm·数据库·python
Suchadar1 小时前
数据库DATABSE——sql server
数据库
檀越剑指大厂2 小时前
迁移之路的隐形陷阱:破解Oracle数据库国产化替代的核心痛点与策略
数据库·oracle
wWYy.2 小时前
详解redis(1)
数据库·redis·缓存
todoitbo2 小时前
Oracle 迁移到 KingbaseES:从问题词到成本的技术拆解
数据库·oracle·kingbasees
会游泳的石头3 小时前
Java 异步事务完成后的监听器:原理、实现与应用场景
java·开发语言·数据库
数智工坊3 小时前
【操作系统-IO调度】
java·服务器·数据库
星梦清河3 小时前
MySQL—分组函数
数据库·mysql
霖霖总总3 小时前
[小技巧33]MySQL 事务持久化的一致性保障:binlog 与 redo log 的两阶段提交机制解析
数据库·mysql