mysql若不存在则插入写法
2016-03-17 12:01
429 查看
最开始想到的办法是先SELECT * FROM table WHERE f1='d1',然后判断之后插入
优化方法 * 可以改为随便一个数字 比如1,然后因为f1不是唯一字段,所以最后在家LIMIT 1
后来听说可以用NOT EXIST来判断,当然了不能直接用INSERT INTO … NOT EXIST (SELECT * FROM table WHERE f1='d1')这样写,参考下面:
因为EXIST只判断存在不存在,用*还是什么以及LIMIT 1,MYSQL都会无视的,直接按最佳优化执行的。
再后来才知道INSERT IGNORE INTO代替INSERT INTO
优化方法 * 可以改为随便一个数字 比如1,然后因为f1不是唯一字段,所以最后在家LIMIT 1
后来听说可以用NOT EXIST来判断,当然了不能直接用INSERT INTO … NOT EXIST (SELECT * FROM table WHERE f1='d1')这样写,参考下面:
INSERT INTO `table` (value1, value2) SELECT 'stuff for value1', 'stuff for value2' FROM DUAL WHERE NOT EXISTS (SELECT * FROM `table` WHERE value1='stuff for value1' AND value2='stuff for value2')
因为EXIST只判断存在不存在,用*还是什么以及LIMIT 1,MYSQL都会无视的,直接按最佳优化执行的。
再后来才知道INSERT IGNORE INTO代替INSERT INTO
相关文章推荐
- MySQL索引使用方法和性能优化
- mysql更新语句获取受影响行数和插入记录id
- POSTGRESQL / mysql 索引区别(where)
- MYSQL导出数据库中的数据到文件
- MYSQL一个简单的问题 error: Failed dependencies: MySQL-server conflicts with mysql-server
- mysql的导入与导出
- mysql 基础安装
- mysqldump参数详细说明
- MySQL逻辑运算符 NULL运算结果
- 使用JDBC在MySQL数据库中快速批量插入数据
- MySQL Cluster简介和搭建例子
- 玩转binlog实现灵活的MySQL数据恢复
- MySQL数据库增量备份及恢复方案
- 阿里云 Ubuntu 14.04 安装mysql 5.6
- MySQL cluster Replication 基本原理
- MySQL中日期与字符串相互转换,并进行日期比较查询
- 开启mysql事务功能
- 整理一下MySQL中的结构和数据的复制操作
- Mysql数据库安装基本设置
- MySQL 主主复制