当前位置:Gxlcms > 数据库问题 > MySQL中经常用到实用的几种SQL语句

MySQL中经常用到实用的几种SQL语句

时间:2021-07-01 10:21:17 帮助过:14人阅读

null, chenhaha, 30, 2020-06-11 20:00:20, 会员充值); -- 21点买皮肤 REPLACE INTO last_transaction (transId,username,amount,trans_time,remark) VALUES (null, chenhaha, 100, 2020-06-11 21:00:00, 购买盲僧至高之拳皮肤);

若username=‘chenhaha‘的记录不存在,REPLACE语句将插入新记录(首次充值),否则,当前username=‘chenhaha‘的记录将被删除,然后再插入新记录。

id不要给具体值,不然会影响SQL执行,业务有特殊需求除外。

2.插入或更新
如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就更新该记录,此时,可以使用"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句:

情景示例:这张表存了用户历史充值金额,如果第一次充值就新增一条数据,如果该用户充值过就累加历史充值金额,需要保证单个用户数据不重复录入。
这时可以使用"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句。

 

注意事项:同上,"INSERT INTO ... ON DUPLICATE KEY UPDATE ..."语句是基于唯一索引或主键来判断唯一(是否存在)的。如下SQL所示,需要在username字段上建立唯一索引(Unique),transId设置自增即可。

-- 用户陈哈哈充值了30元买会员
INSERT INTO total_transaction (t_transId,username,total_amount,last_transTime,last_remark) 
   VALUES (null, chenhaha, 30, 2020-06-11 20:00:20, 充会员) 
   ON DUPLICATE KEY UPDATE  total_amount=total_amount + 30, last_transTime=2020-06-11 20:00:20, last_remark =充会员;
 
-- 用户陈哈哈充值了100元买瞎子至高之拳皮肤
INSERT INTO total_transaction (t_transId,username,total_amount,last_transTime,last_remark) 
   VALUES (null, chenhaha, 100, 2020-06-11 20:00:20, 购买盲僧至高之拳皮肤) 
   ON DUPLICATE KEY UPDATE total_amount=total_amount + 100, last_transTime=2020-06-11 21:00:00, last_remark =购买盲僧至高之拳皮肤;

 

若username=‘chenhaha‘的记录不存在,INSERT语句将插入新记录,否则,当前username=‘chenhaha‘的记录将被更新,更新的字段由UPDATE指定。

 

原文链接:https://blog.csdn.net/qq_39390545/article/details/106690916

MySQL中经常用到实用的几种SQL语句

标签:mount   业务   date   last   哈哈   int   --   基于   常用   

人气教程排行