关于select *,count(distinct *) from...的问题!!求救!!

小妹把原SQL和执行结果附上,求帮助。1.SELECT COUNT(distinct b.person_id) FROM PS_BO_ROLE a ,PS_RD_PERSON b ,PS_TZ_JZY_INF_T c ,PS_TZ_PERS_EXT_TBL d WHERE a.bo_id = b.bo_id AND b.person_id = c.person_id AND b.person_id = d.person_id AND c.TZ_EMPL_STATUS=✀A✀ AND d.TZ_RYZT=✀Y✀ AND a.ROLE_TYPE_ID IN(✀400081✀,✀400076✀,✀400024✀,✀400065✀,✀400022✀,✀400064✀,✀400023✀);2.SELECT a.ROLE_TYPE_ID,COUNT(distinct b.person_id) FROM PS_BO_ROLE a ,PS_RD_PERSON b ,PS_TZ_JZY_INF_T c ,PS_TZ_PERS_EXT_TBL d WHERE a.bo_id = b.bo_id AND b.person_id = c.person_id AND b.person_id = d.person_id AND c.TZ_EMPL_STATUS=✀A✀ AND d.TZ_RYZT=✀Y✀ AND a.ROLE_TYPE_ID IN(✀400081✀,✀400076✀,✀400024✀,✀400065✀,✀400022✀,✀400064✀,✀400023✀) group by a.ROLE_TYPE_ID;这是两句SQL,基本相同,2在1的基础上多查询了一个字段罢了,可是结果却。。。1,2结果按顺序如下明显看到,查不重复全部是39条,可是多显示一个字段就变成47条了,,,求帮助,想得到的结果是总数39并且查询显示a.ROLE_TYPE_ID字段。。。急!!!!!!!!!两个SQL从“from”开始后面的都一样!!
2026年09月23日 17:05
有2个网友回答
网友(1):

你出现这个的原因你得先弄明白了

比如以400081和400023两个id为例

他们的person_id都有为1的,但是group by 后,这两个1分别计数,可是你第一个查询,就会把这两个1合并,只有一条,所以会造成结果2比结果1多出许多来

说你的需求吧,或者截个图做一下你想要的结果

网友(2):

用select语句