以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于删除重复的多余行问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186094) |
-- 作者:xnsiwei -- 发布时间:2023/4/6 9:47:00 -- 关于删除重复的多余行问题 用来删除表中第二列 ,第三列都一样的重复多余行,只保留一行 问题是: 1.当第二列和第三列类型都为字符型时可以实现目的 2.当第二列或第三列为整数型时出错 请版主赐教 Dim idx As String = "-1," Dim idx_temp As String = "" Dim pdr As DataRow = Nothing Dim count As Integer = 0 Dim cs As String = "第二列,第三列" For Each dr As DataRow In DataTables("dsjzl").Select("", cs) Dim flag As Boolean = False If pdr IsNot Nothing Then For Each c As String In cs.split(",") If pdr(c).replace(" ", "") <> dr(c).replace(" ", "") Then flag = True Exit For End If Next If flag Then If count > 1 Then idx &= idx_temp End If count = 1 idx_temp = "" Else count += 1 idx_temp &= dr("_Identify") & "," End If Else count += 1 End If pdr = dr Next If count > 1 Then idx &= idx_temp End If Tables("dsjzl").Filter = "_Identify not In (" & idx.trim(",") & ")" \'DataTables("dsjzl").DeleteFor("_Identify not In (" & idx.trim(",") & ")")
|
-- 作者:有点蓝 -- 发布时间:2023/4/6 10:07:00 -- If pdr(c).replace(" ", "") <> dr(c).replace(" ", "") Then 改为 If pdr(c) <> dr(c) Then
|
-- 作者:xnsiwei -- 发布时间:2023/4/6 10:25:00 -- 谢谢,问题解决!!! 另一个问题是,当表的行数达到20万行甚至更多时,用命令模式运行该代码会造成长时间无响应,还有更好的方法吗?
|
-- 作者:有点蓝 -- 发布时间:2023/4/6 10:36:00 -- 用sql delete from 表A where [_identify] not in (select id from (select 第二列,第三列,max([_identify]) as id from 表A group by 第二列,第三列) as a)
|
-- 作者:xnsiwei -- 发布时间:2023/4/6 10:50:00 -- 不能比较或排序 text、ntext 和 image 数据类型,除非使用 IS NULL 或 LIKE 运算符。 |
-- 作者:有点蓝 -- 发布时间:2023/4/6 10:58:00 -- 把数据库里ntext类型改为nvarchar(max) |