sql批量写入,存在则更新,没有则新增
时间: 2024-03-03 21:47:50 浏览: 94
您可以使用 `INSERT INTO ... ON DUPLICATE KEY UPDATE` 语句来实现批量写入并且存在则更新,不存在则新增的功能。
假如您有一个名为 `users` 的表,其中有 `name` 和 `age` 两个字段,如果 `name` 字段是唯一值(即有唯一索引或主键),则可以使用以下 SQL 语句来批量写入数据:
```
INSERT INTO users (name, age) VALUES
('John', 25),
('Mary', 30),
('Tom', 35)
ON DUPLICATE KEY UPDATE age=VALUES(age);
```
这个语句的含义是,将 `name` 为 "John"、"Mary"、"Tom" 的数据行插入到 `users` 表中,如果已存在相同的 `name`,则更新该数据行的 `age` 字段为插入时指定的值。
其中,`VALUES(age)` 是一个 MySQL 内置函数,用于获取插入语句中指定的 `age` 值。如果插入的数据行已存在,则该函数返回插入语句中指定的 `age` 值,否则返回默认值 `NULL`。
需要注意的是,`ON DUPLICATE KEY UPDATE` 子句只有在插入数据时发现唯一索引或主键冲突时才会执行更新操作,如果插入的数据行不存在冲突,则只会执行插入操作。
阅读全文