ON DUPLICATE KEY
时间: 2023-12-13 19:33:50 浏览: 38
ON DUPLICATE KEY是MySQL中的一种语法,用于在插入数据时处理主键冲突的情况。当插入的数据主键有冲突时,可以使用ON DUPLICATE KEY UPDATE子句来更新相应的字段值,而不是插入一条新的记录。以下是一个简单的例子:
假设我们有一个名为students的表,其中包含id、name和age三个字段,其中id是主键。我们想要插入一条记录,如果id已经存在,则更新该记录的age字段值。
```sql
INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20) ON DUPLICATE KEY UPDATE age = VALUES(age);
```
在这个例子中,如果id为1的记录已经存在,则更新该记录的age字段值为20。如果id为1的记录不存在,则插入一条新的记录。
如果我们想要动态赋值,可以使用VALUES函数。例如,我们可以将上面的例子修改为:
```sql
INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20) ON DUPLICATE KEY UPDATE age = VALUES(age) + 1;
```
在这个例子中,如果id为1的记录已经存在,则更新该记录的age字段值为原来的值加1。如果id为1的记录不存在,则插入一条新的记录。
如果一次插入多条数据,可以使用VALUES函数动态获取主键冲突所要更新的值。例如,我们可以将上面的例子修改为:
```sql
INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20), (2, 'Bob', 30), (3, 'Charlie', 40) ON DUPLICATE KEY UPDATE age = VALUES(age) + 1;
```
在这个例子中,如果id为1、2或3的记录已经存在,则更新该记录的age字段值为原来的值加1。如果id为1、2或3的记录不存在,则插入一条新的记录。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)