Sql server 从具有标识的SQL Server 2012表中删除重复记录
我试图复制一个场景,在这个场景中,我需要从表中删除除一行之外的所有重复行。但所有行都有一个唯一的标识列 为了让事情变得更简单,我创建了一个小的测试表student,脚本如下所示Sql server 从具有标识的SQL Server 2012表中删除重复记录,sql-server,Sql Server,我试图复制一个场景,在这个场景中,我需要从表中删除除一行之外的所有重复行。但所有行都有一个唯一的标识列 为了让事情变得更简单,我创建了一个小的测试表student,脚本如下所示 create table student ( id int, rollno int, name varchar(50), course varchar(50) ) GO insert into student values(1,1335592,'john','biology') ins
create table student
(
id int,
rollno int,
name varchar(50),
course varchar(50)
)
GO
insert into student values(1,1335592,'john','biology')
insert into student values(2,1335592,'john','biology')
insert into student values(3,1335592,'john','biology')
insert into student values(4,1335592,'john','biology')
insert into student values(5,1335593,'peter','biology')
insert into student values(6,1335593,'peter','biology')
insert into student values(7,1335593,'peter','biology')
GO
select * from student
id rollno name course
1 1335592 john biology
2 1335592 john biology
3 1335592 john biology
4 1335592 john biology
5 1335593 peter biology
6 1335593 peter biology
7 1335593 peter biology
这将生成如下表
create table student
(
id int,
rollno int,
name varchar(50),
course varchar(50)
)
GO
insert into student values(1,1335592,'john','biology')
insert into student values(2,1335592,'john','biology')
insert into student values(3,1335592,'john','biology')
insert into student values(4,1335592,'john','biology')
insert into student values(5,1335593,'peter','biology')
insert into student values(6,1335593,'peter','biology')
insert into student values(7,1335593,'peter','biology')
GO
select * from student
id rollno name course
1 1335592 john biology
2 1335592 john biology
3 1335592 john biology
4 1335592 john biology
5 1335593 peter biology
6 1335593 peter biology
7 1335593 peter biology
我想在结果集中保留ID为“1”和“5”的记录,并删除所有其他内容。有没有办法做到这一点
我们将非常感谢您的帮助
谢谢
Shammas使用CTE
质疑
这是一个简单的查询
Delete from student
where id not in (select min(id)
from student
group by rollno, name, course)
你可以用
,
,
这些都会给你结果
尝试:
请参见谢谢乌拉斯……这对我很有效。。发布问题后,我找到了定义良好的链接。谢谢你的回复,银行漫游者。这个脚本也是正确的。很抱歉迟了答复
DELETE s
FROM student s
JOIN student s2 ON s.course = s2.course
AND s.NAME = s2.NAME
AND s.rollno = s2.rollno
WHERE s2.id < s.id