sql having 语句错误的问题?

我做了个sql语句:
Select
p.rfid, sum(d.intake) as amount
from pig_basic p left join daily_food_intake d
on p.rfid=d.rfid
group by p.rfid
order by p.rowid
where amount =0
执行到where出错,去掉where语句则出现正确结果,请问错在哪里?怎么改

3个回答

这涉及where、group by 、having、order by这四个命令的先后顺序,必须以这样的顺序去写!
你的命令应该这样写:

注意:having 是不能用别名的~,order by 可以。

 Select p.rfid, sum(d.intake) as amount
from pig_basic p 
left join daily_food_intake d
on p.rfid=d.rfid
group by p.rfid
having sum(d.intake) =0
order by p.rowid
superbanma
superbanma 这条语句是ok的,谢谢啦
3 年多之前 回复

Select
p.rfid, sum(d.intake) as amount
from pig_basic p left join daily_food_intake d
on p.rfid=d.rfid
group by p.rfid
order by p.rowid
having amount =0;

WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚合计算), 而 HAVING 在分组和聚合之后选取分组的行。因此,WHERE 子句不能包含聚集函数.
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句

superbanma
superbanma 不管用having 还是where 都提示语法错误
3 年多之前 回复

你应该查一下 having 和 where 的区别 什么时候改用having 什么时候 改用 where group by 是个 having 连用的
还有当你后面的条件涉及到一些函数时,也应该用having 而不是 where

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问