用sql语句把数据库中的重复数据消除,只保留一条,可以做吗?

cnhuai 2008-05-19 10:57:14
有个 数据库 有 大量的数据大概600万条
里面有大量的重复数据
如何利用SQL语句来把重复的数据消除
相同的 数据只保留一条?
...全文
421 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2008-05-19
  • 打赏
  • 举报
回复
你的代码是可以的,但效率低,用我的代码重新生成一个新表,效率高一些
SELECT A.* INTO NEWTT FROM TT A INNER JOIN
(SELECT IP,MIN(ID) AS MA FROM TT GROUP BY IP) B
ON A.IP=B.IP AND A.ID=B.MA

A是ipinfo的别名
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
我在网上找的资料
看看这样些对不对:
delete from ipinfo a where a.id<>(select min(id) from ipinfo where ip=a.ip)

如果是对的 不理解a是什么意思
以前学 SQL语句时没碰到这种写法
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
好的 说个清楚的:表名ipinfo
ID ip msk
1 192.168.1.1 24
2 192.168.1.2 24
3 192.168.1.1 23
4 192.168.1.1 26

不管msk字段是什么 就看ip的相同情况

错做结果:
ID ip msk
1 192.168.1.1 24
2 192.168.1.2 24
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
好的 说个清楚的:表名ipinfo
ID ip msk
1 192.168.1.1 24
2 192.168.1.2 24
3 192.168.1.1 23

不管msk字段是什么 就看ip的相同情况

错做结果:
ID ip msk
1 192.168.1.1 24
2 192.168.1.2 24
wwwwb 2008-05-19
  • 打赏
  • 举报
回复
没有看到记录:
TRY
SELECT A.* FROM TT A INNER JOIN
(SELECT IP,MIN(ID) AS MA FROM TT GROUP BY IP) B
ON A.IP=B.IP AND A.ID=B.MA
wwwwb 2008-05-19
  • 打赏
  • 举报
回复
你能否一次将问题描述清楚?最好
将记录及正确结果贴出来看看
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
就是IP重复?只保留一条的标准是什么?ID最大 OR 小?


你说的这个意思
保留哪个都是一样的

那就定ID最小的吧
wwwwb 2008-05-19
  • 打赏
  • 举报
回复
就是IP重复?只保留一条的标准是什么?ID最大 OR 小?

将记录及正确结果贴出来看看
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
表中大概有500万条数据
重复的有20万条

想得到的不重复的(500-20)万条数据
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
数据库表中有及个字段
其中有个是IP字段
大量的数据中IP数据有不少重复

现在想把记录中IP相互重复的消掉,只保留一条

数据库名 ipinfo
wwwwb 2008-05-19
  • 打赏
  • 举报
回复
将记录及正确结果贴出来看看
cnhuai 2008-05-19
  • 打赏
  • 举报
回复
相同的标准是:表中其中的一个字段是相同的
wwwwb 2008-05-19
  • 打赏
  • 举报
回复
相同的标准是什么?KEY字段 还是 整条记录?

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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