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 协议 ,转载请注明出处!