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