天天看點

SQL 查找重複記錄

表stuinfo,有三個字段recno(自增),stuid,stuname

建該表的Sql語句如下:

CREATE TABLE [StuInfo] (

[recno] [int] IDENTITY (1, 1) NOT NULL ,

[stuid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[stuname] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL

) ON [PRIMARY]

GO

1.--查某一列(或多列)的重複值(隻能查出重複記錄的值,不能整個記錄的資訊)

--如:查找stuid,stuname重複的記錄

select stuid,stuname from stuinfo

group by stuid,stuname

having(count(*))>1

2.--查某一列有重複值的記錄(這種方法查出的是所有重複的記錄,也就是說如果有兩條記錄重複的,就查出兩條)

--如:查找stuid重複的記錄

select * from stuinfo

where stuid in (

select stuid from stuinfo

group by stuid

having(count(*))>1

)

3.--查某一列有重複值的記錄(隻顯示多餘的記錄,也就是說如果有三條記錄重複的,就顯示兩條)

--這種方成績的前提是:需有一個不重複的列,本例中的是recno

--如:查找stuid重複的記錄

select * from stuinfo s1

where recno not in (

select max(recno) from stuinfo s2

where s1.stuid=s2.stuid

)