我的表中的列这样如何删除这些行
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
我的表中的列这样如何删除这些行
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
如果你只是想要一个查询,而不重复返回行,你想:
SELECT DISTINCT column1, column2
FROM MyTable
如果实际上要删除的行,然后按照@A哈米德的链接a previous SO answer on deleting duplicate rows
它不起作用。请仔细查看这个查询,它不那么容易 – user980191 2012-01-28 06:57:02
显然,你只需要行其列2的值是您将只剩下你想要的行2和6
Delete from your_table
Where column2<2 or column2>6
现在之间
,你可以选择现在都:Select column1, column2
From yourtable
或'从你的表中删除 (1,7)' – jjj 2012-01-29 06:15:27
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
的列在哪里我不同意你的命名约定:'C'会是一个更自然的选择'COUNT(*)',而不是'D',并且为了避免可能的混淆,'C' CTE可以被命名为'E'!只是开玩笑:)这是一个(其他)实际使用CTE的好例子! – 2012-01-28 16:15:55
@AndriyM - 好吧,我会在名称上工作:)。我猜在这种情况下'D'可能是'DuplicateCount'的缩写。 'C'实际上是一个很好的名字,当它是表'T' :)的派生表时。 – 2012-01-28 16:39:51
你是如何得到低于产量?你跟随什么算法?还有什么你尝试过,你在哪里面临问题? – 2012-01-28 06:40:22
可能重复的[如何删除完全重复的行](http://stackoverflow.com/q/3345268/953140) – Ahamed 2012-01-28 06:42:33
这是一个sql server 2008的问题 – user980191 2012-01-28 06:42:52