mysql 根据普通条件判断是否执行插入操作


场景:
判断数据库中是否有指定的数据,当没有时,执行插入操作,否则什么也不做。

问题:
mysql 目前没有直接的方法完成该操作。

解决思路:
我们可以通过控制 INSERT INTO ... SELECT ... 语句的 SELECT 部分返回值,来控制是否执行插入操作。

示例
当 user 表中不存在 user_name = 'zhangsan' 的记录时,插入一条记录,sql 语句如下:

INSERT INTO `user`(`user_name`, `name`, `password`) 
SELECT 'zhangsan' AS `user_name`, '张三' AS `name`, '123456' AS `password`
FROM `user`
WHERE (SELECT COUNT(1) FROM `user` WHERE `user_name` = 'zhangsan') = 0
LIMIT 1;

示例解析

  • 首先构造 INSERT INTO ... SELECT ... 语句,实现基本的插入操作;
  • 然后使用 SELECT 'zhangsan' AS user_name, '张三' AS name, '123456' AS password 构造一条待插入的数据;
  • 接着给 SELECT 语句带上判断条件: (SELECT COUNT(1) FROM user WHERE user_name = 'zhangsan') = 0,判断是否存在 user_name = 'zhangsan' 的记录。当条件不满足时,SELECT 语句不会返回任何数据,INSERT INTO 也就不会执行;
  • 当条件满足时,为了避免返回多条,加上 LIMIT 1 限制即可。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM