数据重复问题

快乐猪猪侠 2010-12-03 05:00:48
向A表中导入txt文件全量导入,A表中就开始有重复的记录了,
我要删除这些重复,删除A表与txt导入记录相同的,但只把A表里那个删除何留txt导入的记录。
...全文
60 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐猪猪侠 2010-12-06
  • 打赏
  • 举报
回复
快高手,顶一下!
快乐猪猪侠 2010-12-04
  • 打赏
  • 举报
回复
A表结构:
商品代码 商品名称 系数 品类
00001 红河 10 烟
00002 白沙 10 烟

导入的txt和这个表的结构完全一样,导入后的结果如下。系数11的是导入的,把系统是10的删除,

商品代码 商品名称 系数 品类
00001 红河 10 烟
00002 白沙 10 烟
00001 红河 11 烟
00002 白沙 11 烟
最后A表的结果
商品代码 商品名称 系数 品类
00001 红河 11 烟
00002 白沙 11 烟


dawugui 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 btlcm 的回复:]
没有自动增加列的情况下
[/Quote]
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。
如果有多表,表之间如何关联?


发帖注意事项
http://topic.csdn.net/u/20091130/21/fb718680-98ff-4afb-98d8-cff2f8293ed5.html?24281
快乐猪猪侠 2010-12-03
  • 打赏
  • 举报
回复
没有自动增加列的情况下
guguda2008 2010-12-03
  • 打赏
  • 举报
回复
如果是全部列重复,假设表名为TB
SELECT DISTINCT * INTO #TB FROM TB
TRUNCATE TABLE TB
INSERT INTO TB SELECT * FROM #TB
DROP TABLE #TB

如果是部分列重复,需要有一列区分是否是导入的,或者有一列时间列可以判断只保留时间最新的一条。
dawugui 2010-12-03
  • 打赏
  • 举报
回复
假设有个自增列ID,假设按照某关键字COL删除ID不是最大的数据.

delete tb from tb t where id not in (select max(id) from tb where col = t.col)

delete tb from tb t where not exists (select 1 from tb where col = t.col and id > t.id)


假设是按照多列删除数据.

delete tb from tb t where not exists (select 1 from tb where col1 = t.col1 and col2 = t.col2 and id > t.id)
dawugui 2010-12-03
  • 打赏
  • 举报
回复
假设有个自增列ID,假设按照某关键字COL删除ID不是最大的数据.

delete tb from tb t where id not in (select max(id) from tb where col = t.col)
guguda2008 2010-12-03
  • 打赏
  • 举报
回复
重复是指的全部列重复还是部分列重复
「已注销」 2010-12-03
  • 打赏
  • 举报
回复
表结构测试数据

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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