使用GROUP BY重写SQL查询而不使用子查询进行HAVING

时间:2017-07-26 12:39:04

标签: sql

使用没有GROUP BY子句的HAVING的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

如果不能做到,你能举个例子吗?我的意思是,使用GROUP BY后面的子查询无法重写没有HAVING的{​​{1}} SQL查询?

1 个答案:

答案 0 :(得分:1)

我认为,如果你想在同一个表中按值聚合和分组,那将很困难。

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