Foxtable(狐表)用户栏目专家坐堂 → 求助:将数据库里重复的行删掉


  共有2708人关注过本帖树形打印复制链接

主题:求助:将数据库里重复的行删掉

帅哥哟,离线,有人找我吗?
fubblyc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
求助:将数据库里重复的行删掉  发帖心情 Post By:2016/6/26 22:14:00 [只看该作者]

导数据不小心导重了,数据库里有重复的,怎么才能把重复的删掉,同样的只剩下一条呢?数据量很大,十几万条记录


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/26 22:16:00 [只看该作者]

比如 重复 的那一列 ,前面两行 就是 重复的,要只剩下一条。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/27 0:20:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/27 14:26:00 [只看该作者]

谢谢大红袍老师。删除重复的我会了。那发了一个问题,不能把重复的全部删掉,要做判断。连续编号的不能删,不是同一个连续编号的才能删。


图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看

 

[此贴子已经被作者于2016/6/27 14:26:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/27 14:29:00 [只看该作者]

如上图,596482和 596483 的是连续编号,这两个是不能删。而  533332533333 也是连续编号,但是不是和596482 为一组的,说明是重复录进去的,才要删。

要么删596482 的这一组,要么删 533332 的这一组。


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/27 14:34:00 [只看该作者]

现在知道这样做:delet e from people where peopleId in (selec t peopleId from people group by peopleId having count(peopleId) > 1)

这是把所有重复的都删掉了。但是 596482和 596483 虽然是重复的,但是是连续编号,所以两个都要留着。只要 把 533332533333 删掉就行。不知道怎么加条件


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/27 14:35:00 [只看该作者]

一般连续编号不会超过10条。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/27 15:08:00 [只看该作者]

 那就要用代码处理。

 

Dim drs As List(Of DataRow) = DataTables("表A").Select("","第二列,第一列")
Dim pdr As DataRow= Nothing
Dim flag As Boolean = False
For Each dr As DataRow In drs
    If pdr IsNot Nothing
        If dr("第二列") <> pdr("第二列") Then
            flag = False
        Else
            If dr("第一列") <> pdr("第一列")+1 Then
                flag = True
            End  If
            If flag = True Then
                dr("_Sortkey") = -1
            End If
        End If
    End If
    pdr = dr
Next
DataTables("表a").deletefor("_Sortkey = -1")


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/27 22:14:00 [只看该作者]

 

[此贴子已经被作者于2016/6/27 22:17:21编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/6/27 22:32:00 [只看该作者]

大红袍老师,我这样写:

Dim drs As List(Of DataRow) = DataTables("销售明细2").Selec t("","_Identify2,_Identify")
Dim pdr As DataRow= Nothing
Dim flag As Boolean = False
For Each dr As DataRow In drs
    If pdr IsNot Nothing
        If dr("_Identify2") <> pdr("_Identify2") Then
            flag = False
        Else
            If dr("_Identify") <> pdr("_Identify")+1 Then
                flag = True
            End  If
            If flag = True Then
                dr("_Sortkey") = -1
            End If
        End If
    End If
    pdr = dr
Next
DataTables("销售明细2").delet efor("_Sortkey = -1")
messagebox.show("1")

 

结果是这样:


图片点击可在新窗口打开查看此主题相关图片如下:6.png
图片点击可在新窗口打开查看

没有等于 -1 的。所以,也就没有删除任何东西


 


 回到顶部
总数 18 1 2 下一页