日期:2014-05-18  浏览次数:20630 次

本人很笨SQL功底差问一条删除的例子!
数据如下:
    A           B           C           D                 E                 F             G
200705   0045   200701   0001   78451258755   2156411     BH
                        200701   0001   78451258755   2156411     BH
200705   0046   200701   0002   78451258756   2156412     BH
                        200701   0002   78451258756   2156412     BH
200705   0047   200701   0003   78451258755   2156412     BH
                        200701   0004   78451258757   2156413     BH

数据库数据有部份重复,想办法删除像第2,4条的记录,像第6条记录可能重复也可能不复,条件比较是C、D、E、F都要一样才能删除,库中像2、4情况的很多!

我自己的做法是导到excel一条一条比较删除!真失败!

------解决方案--------------------
要刪除的數據的A B都是為空嗎?

如果是的話

Delete A From 表 A
Where Exists (Select C From 表 Where C = A.C And D = A.D And E = A.E And F = A.F)
And IsNull(A, ' ') = ' ' And IsNull(B, ' ') = ' '
------解决方案--------------------
把你现在的表复制一下表结构,改另一个名字,然后管理索引,如果你觉得那些数据重复的不要,就把那几个字段设置成复合索引,然后把唯一值和忽略重复值的勾点上,再运行:
insert into table_tmp
select * from table
delect from table
insert into table
select * from table_tmp
------解决方案--------------------
??
Delete A From 表 A
Where Exists (Select C From 表 Where C = A.C And D = A.D And E = A.E And F = A.F)
200705 0047 200701 0003 78451258755 2156412 BH
200AF701 CD0004 78451258757 2156413 BH
如果存在这种会删除 200AF701 CD0004 78451258757 2156413 BH,这行吧?

------解决方案--------------------
rockywu(吃一贴,长一智) ( ) 信誉:100 2007-08-11 13:22:15 得分: 0


??
Delete A From 表 A
Where Exists (Select C From 表 Where C = A.C And D = A.D And E = A.E And F = A.F)
200705 0047 200701 0003 78451258755 2156412 BH
200AF701 CD0004 78451258757 2156413 BH
如果存在这种会删除 200AF701 CD0004 78451258757 2156413 BH,这行吧?


--------------
首先,你復制的不是我寫的完整代碼

完整的應該是

Delete A From 表 A
Where Exists (Select C From 表 Where C = A.C And D = A.D And E = A.E And F = A.F)
And IsNull(A, ' ') = ' ' And IsNull(B, ' ') = ' '


其次,即使是你那麼寫,也不會刪除你說的那一行,注意下條件。