sql 使用知识总结

1  查询重复的数据

 单列+单列显示: 如果需要查询 A 列 重复的数据

select A列 from tablename group by A列  having count(*)>1

组合列+组合列显示 : 比如 A列 和B 列 组合确定一条数据 ,比如计划中的某一个资产

select A列,B列 from tablename group by A列,B列 having count(*)>1

单列筛选+全部显示

select * from tablename where A列 in( select A 列  from tablename having count(*)>1) 

组合列筛选+全部显示

select * from tablename where (A列,B列) in (select A列,B列 from tablename group by A列,B列 having count(*)>1)

//这样写不知道对不对

2  删除重复的数据

  1 删除重复的数据,只保留最大的数据

delete from tablename where A列 not in (select max(A列) from tablename group by A列 having count(*) >1)
 

 //做分组的时候最好能够利用条件进行where 筛选之后分组

select A列 from tablename where B列='xxx' group by A列 having count(*)>1

3  提高查询的效率

  在进行表的连接的时候,使用虚拟表进行连接的时候不要使用*,尽量列出来需要使用的列

  不好的sql

select b.*,t1.* from b left join (select * from c ) t1 on b.id=t1.mainid

 优化后的sql

select b.name,b.id from  b left join (select  mainid,lastname from c )t1 on b.id=t1.mainid

 

2 EXISTS 的效率要比 in 的 高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值