如下SQL如何写?

felix1999 2006-09-15 12:35:11
现在有这么一个表:
person
zoneno LGLDOCTP CHNSNAME LGLDOCNO
200 1 张三 1234567890
302 1 张三 1234567890
4010 3 张三 1234567890
200 0 张三 1234567890
200 1 张三 1234567890

我想SELECT出所有LGLDOCTP、CHNSNAME、LGLDOCNO这三个字段值都相同的记录明细(不管ZONENO是否相同),使用如下SQL:
SELECT *
FROM PERSON AS A
WHERE EXISTS (SELECT * FROM PERSON B
WHERE A.LGLDOCTP = B.LGLDOCTP
AND A.CHNSNAME = B.CHNSNAME
AND A.LGLDOCNO = B.LGLDOCNO );
但得到的机构却是:
PERSON_1
zoneno LGLDOCTP CHNSNAME LGLDOCNO
200 1 张三 1234567890
302 1 张三 1234567890
4010 3 张三 1234567890
200 0 张三 1234567890
200 1 张三 1234567890

事实上我想要的记过应该是第1,2,5笔记录,请问哪位可以指教一下,谢谢!
...全文
157 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
thordon 2006-09-15
  • 打赏
  • 举报
回复
好象我想错了
select LGLDOCTp,CHNSNAME,LGLDOCNO from person as b ,
(select LGLDOCTp,CHNSNAME,LGLDOCNO from person group by LGLDOCTp,CHNSNAME,LGLDOCNO having count(*) >=2) as a where b.LGLDOCTp=a.LGLDOCTp and b.CHNSNAME=a.CHNSNAME and b.LGLDOCNO and a.LGLDOCNO
felix1999 2006-09-15
  • 打赏
  • 举报
回复
LGLDOCTP CHNSNAME LGLDOCNO
这三个字段的数据类型都不一致,可以连在一起吗?我在ACCESS中试了是不行的
xzq111 2006-09-15
  • 打赏
  • 举报
回复
SELECT *
FROM PERSON AS A
where exists(select 1 from PERSON b where a.LGLDOCTP+a.CHNSNAME + a.LGLDOCNO = b.LGLDOCTP+b.CHNSNAME + b.LGLDOCNO)
thordon 2006-09-15
  • 打赏
  • 举报
回复
select LGLDOCTp,CHNSNAME,LGLDOCNO from person group by LGLDOCTp,CHNSNAME,LGLDOCNO having count(*) >=2
dawugui 2006-09-15
  • 打赏
  • 举报
回复
select * from
person as a, (select LGLDOCTP,CHNSNAME,LGLDOCNO ,count(*) from person group by LGLDOCTP,CHNSNAME,LGLDOCNO having count(*) > 1)b
where a.LGLDOCTP = b.LGLDOCTP and a.CHNSNAME=b.CHNSNAME and a.LGLDOCNO=b.LGLDOCNO

felix1999 2006-09-15
  • 打赏
  • 举报
回复
这样就可以了:
SELECT B.* FROM
(select ZONENO,LGLDOCTP,CHNSNAME,LGLDOCNO from person) b ,
(select LGLDOCTP,CHNSNAME,LGLDOCNO from person group by LGLDOCTP,CHNSNAME,LGLDOCNO having count(*) >=2) a
where b.LGLDOCTP=a.LGLDOCTP and b.CHNSNAME=a.CHNSNAME and b.LGLDOCNO and a.LGLDOCNO ;
cbgn 2006-09-15
  • 打赏
  • 举报
回复
SELECT DISTINCT *
FROM PERSON AS A
WHERE EXISTS (SELECT * FROM PERSON B
WHERE A.LGLDOCTP = B.LGLDOCTP
AND A.CHNSNAME = B.CHNSNAME
AND A.LGLDOCNO = B.LGLDOCNO );

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧