SQL35 对于表actor批量插入如下数据,冲突忽略
本文最后更新于:2022年4月9日 中午

题目描述
对于表actor批量插入如下数据,如果数据已经存在,请忽略(不支持使用replace操作)
1 |
|
actor_id | first_name | last_name | last_update |
---|---|---|---|
‘3’ | ‘ED’ | ‘CHASE’ | ‘2006-02-15 12:34:33’ |
输入描述
无
输出描述
无
题解
1 |
|
备注:
系统使用的是sqlite3,因此
insert or ignore into 表 values(),...,()
;对于mysql,那么把
or
去掉,insert ignore into 表 values(),...,()
;主键冲突的解决方案有三种,但是需要根据具体的业务来选择合适的方式
- 忽略新数据:
insert ignore
- 更新部分数据:
insert ... on duplicate key update
- 全部替换:
replace into
从效率上来讲,
insert into
不考虑冲突的效率最高,三种解决冲突的方式都会有效率下降(需要检索),其中三种本身的效率依次是:忽略新数据 > 更新部分数据 > 替换全部。- 忽略新数据:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!