MySql插入不重复纪录--不依据主键判断

      语法格式: insert … select … where not exist 
       例如: INSERT INTO student(name) SELECT '张三' FROM dual WHERE NOT EXISTS (SELECT name FROM student WHERE name = '张三')

       这种方法其实就是使用了mysql的一个临时表的方式,根据子查询的条件判断是否插入,但是里面使用到了子查询,效率也会有一点点影响,如果可以使用主键判断重复,建议还是使用.insert ignore into 或者on duplicate key update 这种方式。

       这种方式的dual是mysql定义的特殊虚拟表,主要为select.... from....这种写法而提供的。如果写select * from `dual`; 和 show create table `dual`查看表结构都会报错的,因为他本身是虚拟表,是不支持这样查询的。
       

猜你喜欢

转载自blog.csdn.net/jiang_zf/article/details/81506622
今日推荐