如何删除数据库中某一字段内容相同的记录呢?

wangking 2001-04-10 11:03:00
刚开始学SQL,什么也不懂。
我用sql server 7.0,有这么个库,有这几个字段:
User_ID int
Username string
usergroup_id int

现在我想把username中重复的字段都干掉,只保留一个,用sql怎么写?
...全文
302 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwl007 2001-04-28
  • 打赏
  • 举报
回复

delete tablename from tablename,(select username as kkk,max(user_id) as iid from tablename group by username having count(*)>1) b where tablename.username=b.kkk and tablename.user_id<b.iid
基本思想是用
select username as kkk,max(user_id) as iid from tablename group by username having count(*)>1 查找到最每一个最大的id号!
然后删除所有比它下的用户!

hughie 2001-04-28
  • 打赏
  • 举报
回复
或者你的表中有唯一索引的字段吗?
hughie 2001-04-28
  • 打赏
  • 举报
回复
你的表中有主键吗?
华南虎哥 2001-04-28
  • 打赏
  • 举报
回复
zhhp6489方法可行度最高,我推荐大家使用
webo 2001-04-10
  • 打赏
  • 举报
回复
复制一个一样的表,全删,再 insert ... group by username 过去!
不要把简单的问题搞的复杂化!
Tigerfish 2001-04-10
  • 打赏
  • 举报
回复
你可以先增加一个标志每条记录的字段,再删除。再删除标志字段。
yangzi 2001-04-10
  • 打赏
  • 举报
回复
那你的user_id是不是也有重复?

yukuang 2001-04-10
  • 打赏
  • 举报
回复
我想到了用:
delete tablename where username not in (select distinct username from tablename)

可是不行
binghuodao 2001-04-10
  • 打赏
  • 举报
回复
SQL中要么就全删,要么就不删。你可以都删了再加一条
guostong 2001-04-10
  • 打赏
  • 举报
回复
oracle 中可以如此
emp 表中删除重复的empno
delete from emp a
where exists(select b.empno from emp b where a.empno=b.empno
group by b.empno having count(*)>1)
and rowid not in (select min(rowid) from emp c where c.empno=a.empno);
zhhp6489 2001-04-10
  • 打赏
  • 举报
回复
delete from tablename where user_id not in (
select min(user_id) from tablename group by username)
wangking 2001-04-10
  • 打赏
  • 举报
回复
user_id是自动增加的,不重复。
webo的方法我有想过,可这样消耗资源太大。

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧