楼主: cynthialam
3546 11

[原创博文] 【求教】如何剔除重复的记录 [推广有奖]

11
cynthialam 发表于 2012-1-12 14:10:46
tj0412ymy 发表于 2012-1-11 17:56
多谢~

12
H奥 发表于 2012-1-12 14:11:23
、具有主键的情况
a.具有唯一性的字段id(为唯一主键)
delect   table   
where   id   not   in   
( select   max(id)   from   table   group   by   col1,col2,col3... )
group   by   子句后跟的字段就是你用来判断重复的条件,如只有col1,
那么只要col1字段内容相同即表示记录相同。

b.具有联合主键
假设col1+ ', '+col2+ ', '...col5   为联合主键
select   *   from     table   where   col1+ ', '+col2+ ', '...col5   in   ( select   max(col1+ ', '+col2+ ', '...col5)   from   table   where   having   count(*)> 1
group   by   col1,col2,col3,col4   )
group   by   子句后跟的字段就是你用来判断重复的条件,
如只有col1,那么只要col1字段内容相同即表示记录相同。


or
select   *   from   table     where   exists   (select   1   from   table   x   where   table.col1   =   x.col1   and   
table.col2=   x.col2   group   by   x.col1,x.col2   having   count(*)   > 1)

c:判断所有的字段
    select   *   into   #aa   from   table   group   by   id1,id2,....
    delete   table   
    insert   into   table   
    select   *   from   #aa

二、没有主键的情况

a:用临时表实现
select   identity(int,1,1)   as   id,*   into   #temp   from   ta
delect   #temp   
where   id   not   in   
(  select   max(id)   from   #   group   by   col1,col2,col3... )
delete   table   ta
inset   into   ta(...)

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 09:36