0

可能重复:
删除脚本 SQL Server 2008

这是我试图解决的一种情况。我有一个装有重复项的表。发生这种情况是因为类似的行是从两个或更多不同的来源加载的。这是在包装中处理的。

但我想删除那些重复的行。这里没有关键属性。来源的例子是Cleveland CityOhio State。我有一列显示该行是从哪个源加载的(DataSource列)。

因此在行中它显示为DataSource = 'Cleveland'DataSource = 'Ohio'

我想保留那些从俄亥俄州加载时导致重复的记录。它的 10 万条记录我可能不得不使用连接。还有一件事我的主表与其他四个或五个表连接在一起rId,每行都是唯一的,这就是为什么你看到我加入这些表而我认为我做错了。

你能检查一下我的工作吗?我真的很感激。

 --Delete ct from--this is to delete w/c is my main intention
 SELECT * 
 FROM
  (
     (
        SELECT Rid,UID,ADDRESS,City,State,Zip,DataSource  
        FROM F_staRes where dataSource='Ohio'
     ) O inner join
     (
           SELECT Rid,UID,ADDRESS,City,State,Zip,DataSource  
           FROM F_staRes 
           where DataSource  in   ('Clev','Columbus')
     ) ct
          on O.UID=ct.UID and O.ADDRESS=ct.ADDRESS  and O.City=ct.City and   
          O.State=ct.State  and O.zip=ct.zip

            join dbo.ResOrig ro
            on ct.rId=ro.rId 

            join dbo.ResSta rs
            on ct.rId=rs.rId

            join dbo.ResDest rd 
            on ct.rId=rd.rId

           where ct.DataSource in ('Clev','Columbus')
4

1 回答 1

0

试试这个

确保您有列来比较重复项,并且按照列的顺序,您必须在您的情况下保留 asc 或 desc只需执行脚本

;WITH tbl_online AS (
SELECT *,ROW_NUMBER () OVER (
PARTITION BY UID,ADDRESS,City,State,Zip ORDER BY DataSource  DESC) AS Rnum
FROM F_staRes)
--SELECT *  FROM tbl_online WHERE Rnum >1
DELETE   FROM tbl_online WHERE Rnum >1
于 2012-10-18T21:06:07.687 回答