例如假设我有
SELECT sum(...) as total
我可以做点什么吗
WHERE total > 10
当我尝试实际语法时,我收到错误
无效的列名'total'
答案 0 :(得分:6)
如果您将sum
与group by
select sum(...)
group by Col1
having sum(...) > 10
没有group by
select sum(...)
having sum(...) > 10
如果要使用列名,则需要将查询放在子查询中
SELECT * FROM (
SELECT sum(...) as total
) as T
WHERE total > 10
答案 1 :(得分:1)
"聚合可能不会出现在WHERE子句中,除非它在a中 包含在HAVING子句或选择列表中的子查询以及列 被聚合是一个外部参考"。
HAVING就像使用聚合函数的WHERE,或者你可以使用子查询。
select name, sum(amount) as total
from table
group by name
having sum(amount) > 10
或者
select * from(
select name, sum(amount) as total
) as temp
where temp.total > 10