使用GROUPBY和不使用子查询重写SQL查询
使用没有HAVING子句的GROUPBY的SQL查询可以使用子查询重写。一个简单的例子如下:使用GROUPBY和不使用子查询重写SQL查询,sql,Sql,使用没有HAVING子句的GROUPBY的SQL查询可以使用子查询重写。一个简单的例子如下: select A.a_id, sum(B.b_count) Bsum from A left join B on A.a_id = B.a_id group by A.a_id select A.a_id, ( select sum(b.b_count) Bsum from B where A.a_id = B.a_id ) from A 你能给我举一个不能做到的例子吗?
select A.a_id, sum(B.b_count) Bsum
from A
left join B on A.a_id = B.a_id
group by A.a_id
select A.a_id,
(
select sum(b.b_count) Bsum
from B
where A.a_id = B.a_id
)
from A
你能给我举一个不能做到的例子吗?我的意思是,如果无法使用SELECT?后面的子查询重写没有数据的GROUP BY SQL查询,我认为如果要在同一个表中聚合和按值分组,这将很困难
select A.a_id, sum(B.b_count) Bsum
from A
left join B on A.a_id = B.a_id
group by A.a_id, b.otherVal
听起来像是我的家庭作业。我投票结束这个问题,因为它根本不是一个编程问题。嗯,这是什么样的问题?好吧,这不是因为分组中的计算,而是因为B表是分组中的一部分,所以找到反例是很简单的。这回答了你的问题吗?我想即使在这种情况下,查询也可以在没有分组的情况下重写:选择不同的A1.a\u id,B1.a\u id,从A2上的A2左连接b B2中选择sumB2.b\u计数。A2.a\u id=A1.a\u id和B2.a\u id=B1.a\u id从A1上的A1左连接b B1中选择sumB2.b\u计数。a\u id=B1.a\u id=B1以同样的精神,我可以用分组后的计算重写您的原始查询。但是,FROM后面的子查询是必需的。Distinct当然只是groupby*by另一个名称!也许如果你通过一个链接表c在表a和表b之间建立了多对多的关系,并按a和c中的事物进行分组。。。