面试---查找重复列

代码
 1 查找重复列:
 2 
 3 select * from ysgg where number in(select number from ysgg group by number having count(number)>1);
 4 
 5  
 6 
 7 删除重复列:
 8 
 9 delete from ysgg where number in (select min(number) from ysgg group by number having count(number)>1);
10 
代码
表stuinfo,有三个字段recno(自增),stuid,stuname
  
  建该表的Sql语句如下:
  
  Create TABLE [StuInfo] (
   [recno] [
int] IDENTITY (11) 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
  )

 

 

 

posted @ 2010-08-25 12:39  hevily  Views(347)  Comments(0Edit  收藏  举报