MySql on duplicate key update

本文介绍了MySQL中的ONDUPLICATEKEYUPDATE语句,展示了如何在插入数据时遇到唯一键冲突时执行UPDATE操作,包括使用常量、变量、CASE语句和函数处理不同情况。提醒注意SQL标准兼容性问题。
摘要由CSDN通过智能技术生成

"ON DUPLICATE KEY UPDATE"是MySQL的语法,当尝试插入的行导致一个duplicate key错误(如果该行中存在一个unique索引或primary key,并且该索引或primary key在表中已经存在),则执行UPDATE。

使用基本的SQL语句:

## 在这个例子中,如果在table_name表中存在a或b的重复值,那么执行UPDATE语句,将c的值增加1。
INSERT INTO table_name (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

使用变量:

## 在这个例子中,如果在table_name表中存在a或b的重复值,那么执行UPDATE语句,将c的值增加1。
SET @a=1;
SET @b=2;
SET @c=3;
INSERT INTO table_name (a,b,c) VALUES (@a,@b,@c)
ON DUPLICATE KEY UPDATE c=c+1;

使用CASE语句:

## 在这个例子中,如果在table_name表中存在a或b的重复值,那么执行UPDATE语句,
## 如果a等于10,则将c的值增加10;如果b等于20,则将c的值增加20;否则,将c的值增加1。
INSERT INTO table_name (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c= CASE 
                        WHEN a=10 THEN c+10 
                        WHEN b=20 THEN c+20 
                        ELSE c+1 
                      END;

使用函数:

## 在这个例子中,如果在table_name表中存在a或b的重复值,那么执行UPDATE语句,将c的值更新为c-1的绝对值。
INSERT INTO table_name (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c= ABS(c-1);

注意:

ON DUPLICATE KEY UPDATE只是MySQL的语法,不是SQL标准语法,所以在使用时请注意兼容性问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值