此语句是什么意思请详细回答

qq_29845565 2015-12-11 02:18:01
此段语句是正确的,但其中一部分不知道是什么意思,语句如下:
convert(decimal(5,2),count(*)*100/(select count(*) from a where id=b.id)) c
其中的(select count(*) from a where id=b.id) 不明白,不是应该写成(select count(*) from a,b where a.id=b.id) 吗,但改了又不正确,请详细解释,多谢。
...全文
176 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
feihong0233 2015-12-13
select count(*) from a where id=b.id 是子查询,在b表查询内,如 SELECT id, (select count(*) from a where id=b.id) AS c FROM b 代表查询a表内id为b表当前行id列值的记录数量,你可以理解b表在执行SELECT语句的时候逐行扫描传送id给子查询
回复
qq_29845565 2015-12-11
因为b表中id有多个,是相当于按b表中的id分组,然后分别统计a表中的 数量吗?
回复
qq_29845565 2015-12-11
引用 3 楼 u010192842 的回复:
select count(*) from a where id=b.id 解释:这个是b表的当前id对应在a表中的数量,类似于按id汇总了。 select count(*) from a,b where a.id=b.id 解释:这个是a和b关联后的总数量。
b 表中有好几个不同的id,是分别按b表中的id对a表进行汇总吗?因为有好几个id,这一条语句是属于循环执行的吗?
回复
Yole 2015-12-11
select count(*) from a where id=b.id 解释:这个是b表的当前id对应在a表中的数量,类似于按id汇总了。 select count(*) from a,b where a.id=b.id 解释:这个是a和b关联后的总数量。
回复
qq_29845565 2015-12-11
就是想知道 select count(*) from a where id=b.id 是什么意思,正常是不是应该这么写吗 select count(*) from a,b where a.id=b.id 有什么区别呢
回复
Yole 2015-12-11
上文中应该有b表吧~~ 写全了再看。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-12-11 02:18
社区公告
暂无公告