只知道筛选出重复号码的方法:select * from tb where a in(select a from tb group by a having COUNT(*)>1) 。
数据库是sqlserver2008
求教大神,删除tb表的a字段中的重复值,保留唯一值的sql语句该怎么写?
答案:5 悬赏:80 手机版
解决时间 2021-02-20 14:23
- 提问者网友:我没有何以琛的痴心不悔
- 2021-02-19 19:33
最佳答案
- 五星知识达人网友:低音帝王
- 2021-02-19 19:54
DELETe tb
WHERe ID
IN(
select ID from tb
where a in(select a from tb group by a having COUNT(*)>1) ) 注意WHERe语句 ID, 你把你的筛选语句中的 * 改成能唯一标识出这一行数据的ID列或者什么。
这样就可以实现删除了。
WHERe ID
IN(
select ID from tb
where a in(select a from tb group by a having COUNT(*)>1) ) 注意WHERe语句 ID, 你把你的筛选语句中的 * 改成能唯一标识出这一行数据的ID列或者什么。
这样就可以实现删除了。
全部回答
- 1楼网友:山君与见山
- 2021-02-20 00:47
没有 表结构和唯一的键值 这个不好操作吧
- 2楼网友:独钓一江月
- 2021-02-19 23:44
delete from tb where id not in(select max(id) from tb group by a)
- 3楼网友:零点过十分
- 2021-02-19 22:42
简单的很 select DISTINCT * into tbtemp from tb where a in (.....)
然后 delete tb where a in (.....)
然后insert into tb
select * from tbtmep
- 4楼网友:狂恋
- 2021-02-19 21:06
你好!
如果tb中有唯一确定值的比如id的话,可以不用having,直接用group by分组,删除除了最小或最大的id
也就是保留最小或最大的id
我的回答你还满意吗~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯