这个查询该怎么写?(100分)

  • 主题发起人 主题发起人 bfox
  • 开始时间 开始时间
B

bfox

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一个表 person ,主键为pcode ,另有pname(姓名), borndate,address 等字段
现在想查询出表中所有PNAME 重复的记录,也就是查询出表中所有相同pname 出现超过一次的
纪录,这个查询应该怎么写?
分给最先正确回答该问题的DFW:)
 
Oracle中吗?要是Oracle中,可以很容易搞定。
 
http://www.oradb.net/sql/find0.htm
 
select a.pcode, a.pname, a.borndate, a.address
from person a, person b
where a.pname=b.pname and a.pcode<>b.pcode
 
select count(*),pname from person group by pname having count(*) > 1;
 
select * from tablename
where pcode=
(slelect pname,pcode from tablename having count(panme)>1)
 
select a.pcode, a.pname, a.borndate, a.address
from person a,
(select pname,count(pname) as tmp from person group by pname) b
where a.pname=b.pname and b.tmp>1
 
同意lujuhe兄的,
 
试试我得sql,改过了!
 
select * from person where pname in
(select pname from person group by pname having count(pname)> 1)
 
我的环境是赛羊1。7G,128M,MS SQL7。0 98,数据库在本地,大概有10K条记录
eric.youbin 兄,你的SQL是否有错误,我用你的查询费时14,显示18422ROWS,是否我理解
有误?
LUJUHE兄,也许是我没说清楚,我是要记录,不是要PCODE ,不过如果把你的语句改为
select * from person where pname in (select pname from person group by pname having count(*) > 1)
就可以满足我的要求了:)这样改后费时14,查出6985条记录
eric.youbin兄,你的查询是最快的,费时 9,查出6985条记录。
大家看看我说的对吗?
 
select a.pcode, a.pname, a.borndate, a.address
from person a join person b
on a.pname=b.pname
where a.pcode<>b.pcode
 
多人接受答案了。
 
后退
顶部