sql 查询和删除冗余数据

来源:互联网 发布:淘宝旺铺有什么好处 编辑:程序博客网 时间:2024/05/16 01:57


1.  查询重复数据

Select * From SF_Org_Relation_Department_User
Where (SF_Org_Relation_Department_User.OD_Id+'_'+SF_Org_Relation_Department_User.OU_Id) in (
Select OD_Id+'_'+OU_Id From SF_Org_Relation_Department_User group by OD_Id,OU_Id having COUNT(*)>1)



2. 删除重复数据,只保留一条

Declare @odid varchar(50)
Declare @ouid varchar(50)

DECLARE Table_Cursor CURSOR FOR 
 Select OD_Id,OU_Id From SF_Org_Relation_Department_User
  Where (SF_Org_Relation_Department_User.OD_Id+'_'+SF_Org_Relation_Department_User.OU_Id) in (
  Select OD_Id+'_'+OU_Id From SF_Org_Relation_Department_User group by OD_Id,OU_Id having COUNT(*)>1)
Open Table_Cursor  
FETCH NEXT FROM Table_Cursor INTO @odid,@ouid  
WHILE @@FETCH_STATUS = 0     
BEGIN
 
 Delete From SF_Org_Relation_Department_User Where OD_Id=@odid and OU_Id=@ouid
    and ORDU_Id not in (Select top 1 ORDU_Id From SF_Org_Relation_Department_User WhereOD_Id=@odid and OU_Id=@ouid)
 
 FETCH NEXT FROM Table_Cursor INTO @odid,@ouid         
END
CLOSE Table_Cursor     
DEALLOCATE Table_Cursor