2011-09-02 58 views
0

我有一個帶有(第一,第二)列的表T.我有兩行,第一個= 1,第二個= 2。我想刪除其中的一行。我怎麼做?從相同行中刪除一行

+0

請指定您正在使用的SQL Server版本。 –

回答

4
;WITH CTE AS 
(
SELECT TOP 1 * 
FROM YourTable 
WHERE first=1 and second=2 
) 
DELETE FROM CTE; 

或者,如果SQL Server 2000的

DELETE T 
FROM (
    SELECT TOP 1 * 
    FROM YourTable 
    WHERE [first]=1 and [second]=2 
) T; 

然後添加一個主鍵。

+0

這是刪除的目的.. – Naor

3

您可以使用ROW_NUMBER()。

DECLARE @T as Table(First int , Second int) 

INsert Into @T 
Values (1,2), 
(1,2) 

SELECT * FROM @T 

;WITH CTE as 
(SELECT ROW_NUMBER() over (order by first,second) rn , * from @T) 

DELETE FROM CTE where rn = 1 

select * from @T 

如果你改變RN包括由

ROW_NUMBER() over (PARTITION BY first, second order by first,second)

分區,改變在哪裏是WHERE RN <> 1

,你可以使用它作爲一個通用的解決方案,以消除一是任何受騙者,秒

+0

對不起,花了我一秒鐘的時間才知道他在問什麼...... – EJC

+0

不幸的是,在最後的演出中,我們有一系列沒有PK的表格,無法更正,所以我必須創建視圖,通過row_number定義一個「唯一」值,就像這個答案提出的那樣。醜,hacktastic,但它的作品。 – billinkc

+0

@EJC。沒什麼大不了。你通過刪除你的答案做了正確的事情。我有很多類似刪除的答案,我的自我 –