MySQL中的"有则无则插入"(INSERT ... ON DUPLICATE KEY UPDATE
)是一种语句,用于在表中插入一行记录,如果表中已经存在具有相同唯一索引或主键的记录,则更新该行记录。这种语句结合了INSERT
和UPDATE
的功能,可以在单个操作中处理插入和更新。
MySQL提供了两种主要的语法形式:
INSERT ... ON DUPLICATE KEY UPDATE
:当插入的记录与唯一索引或主键冲突时,更新现有记录。REPLACE INTO
:当插入的记录与唯一索引或主键冲突时,删除现有记录并插入新记录。假设有一个用户表users
,结构如下:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
email VARCHAR(100),
age INT
);
使用INSERT ... ON DUPLICATE KEY UPDATE
语句插入或更新用户记录:
INSERT INTO users (username, email, age)
VALUES ('john_doe', 'john@example.com', 30)
ON DUPLICATE KEY UPDATE
email = VALUES(email),
age = VALUES(age);
INSERT ... ON DUPLICATE KEY UPDATE
语句没有生效?原因:
解决方法:
INSERT ... ON DUPLICATE KEY UPDATE
语句执行缓慢?原因:
解决方法:
希望以上信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云