2013-01-31 27 views
2

我有一個日誌表,裏面有多行添加狀態(「status = 0」意思是「添加」)。如何從表中刪除重複添加日誌?

如何刪除status = 0但它必須是不重複的值。例如,每個交易ID(tid)必須只有一個值爲status = 0

例如;

id tid  tblname   type  status 
1 101  x     U    0 
2 101  x     U    0 
3 102  x     U    0 
4 102  x     U    0 
5 102  x     U    0 

必須返回:

id tid  tblname  type   status 
1 101  x   U    0 
3 102  x   U    0 

我怎麼能這樣做?

+0

的http://stackoverflow.com/questions/11130964/delete-duplicate-rows-in-sql-server-2010 – TechDo

+0

可能重複的可能的複製[參數化一個SQL IN子句?](http://stackoverflow.com/questions/337704/parameterizing-an-sql-in-clause) – programmerist

+0

對不起,我明白錯誤。抱歉。 – programmerist

回答

2

的CTE和ROW_NUMBER

WITH x AS (SELECT rn = Row_number() 
         OVER( 
         partition BY tid 
         ORDER BY id) 
     FROM dbo.log 
     WHERE status = 0 
       AND tblname = 'X' 
       AND type = 'U') 
DELETE FROM x 
WHERE rn > 1