mysql-常用sql

本文介绍了多种SQL操作技巧,包括删除或更新指定数量的重复记录、根据条件插入或替换记录、带有条件的计数及去重统计等。还展示了如何实现存在则更新,不存在则插入的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

删除/更新相同的记录的前n条

delete/update  from table where condition  limit n;

插入时存在则替换

replace into t values(a);
replace:先根据主键或唯一索引删除旧的,再插入新的。

一次插入多条记录

INSERT INTO `student` (`id`, `name`, `subject`, `score`) VALUES
(1, '小明', '英文', 80),
(2, '小明', '数学', 79),
...
(9, '小红', '语文', 81);

不存在则插入,存在则不插入

INSERT INTO ta (NAME ,age) SELECT 'phl2',18 FROM DUAL WHERE NOT EXISTS (SELECT NAME FROM ta WHERE NAME ='phl2')

带条件的count

统计sub_type='REFUND_FEE’ 的记录数:
方法一.select count(sub_type) from t where t.sub_type='REFUND_FEE’;
方法二.select sum(if( B.sub_type='REFUND_FEE’ ,1,0)) from t;
方法三.select count(B.sub_type=‘REFUND_FEE’ or null) from t;
解释:
当select B.sub_type=‘REFUND_FEE’ 时:
如果sub_type为REFUND_FEE则返回1,
不空且不为REFUND_FEE否则返回0,
空时返回null。
所以B.sub_type=‘REFUND_FEE’ or null 只返回sub_type=‘REFUND_FEE’ 的,其余的都返回null ,而count(列名)时是不会统计null的个数的
注:count(*)会把null的个数也统计在内

带条件的查询去重统计

select COUNT(DISTINCT case when  B.sub_type IN ('REFUND_FEE','REFUND_FEE_GOOD') and R.status='SUCCESS' then  B.buyer_nick end) from t

存在则更新,不存在则插入

INSERT INTO ta (NAME,age) VALUES ('phl1',19),('phl3',20) ON DUPLICATE KEY UPDATE age=30; -- name列为唯一索引



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值