2012-01-28 68 views
2

我的表中的列這樣如何刪除這些行

column1 column2 
100  1 
100  1 
101  2 
101  3 
102  4 
102  5 
103  6 
104  7 
104  7 

,我希望輸出這樣

column1 column2 
101  2 
101  3 
102  4 
102  5 
103  6 
+0

你是如何得到低於產量?你跟隨什麼算法?還有什麼你嘗試過,你在哪裏面臨問題? – 2012-01-28 06:40:22

+0

可能重複的[如何刪除完全重複的行](http://stackoverflow.com/q/3345268/953140) – Ahamed 2012-01-28 06:42:33

+0

這是一個sql server 2008的問題 – user980191 2012-01-28 06:42:52

回答

0

顯然,你只需要行其列2的值是您將只剩下你想要的行2和6

Delete from your_table 
Where column2<2 or column2>6 

現在之間

,你可以選擇現在都:

Select column1, column2 
From yourtable 
+0

或'從你的表中刪除 (1,7)' – jjj 2012-01-29 06:15:27

1
declare @T table 
(
    c1 int, 
    c2 int 
) 

insert into @T values 
(100,  1), 
(100,  1), 
(101,  2), 
(101,  3), 
(102,  4), 
(102,  5), 
(103,  6), 
(104,  7), 
(104,  7) 

;with C as 
(
    select count(*) over(partition by C1, C2) as D 
    from @T 
) 
delete from C 
where D > 1 
+1

的列在哪裏我不同意你的命名約定:'C'會是一個更自然的選擇'COUNT(*)',而不是'D',並且爲了避免可能的混淆,'C' CTE可以被命名爲'E'!只是開玩笑:)這是一個(其他)實際使用CTE的好例子! – 2012-01-28 16:15:55

+1

@AndriyM - 好吧,我會在名稱上工作:)。我猜在這種情況下'D'可能是'DuplicateCount'的縮寫。 'C'實際上是一個很好的名字,當它是表'T' :)的派生表時。 – 2012-01-28 16:39:51