superbanma
2016-11-23 15:14
采纳率: 25%
浏览 1.3k

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条回答 默认 最新

  • Sevan_Li 2016-11-24 06:07
    已采纳

    这涉及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
    
    点赞 打赏 评论
  • newerC 2016-11-23 16:19

    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执行优先级别要快于聚合语句

    点赞 打赏 评论
  • saycheesenn 2016-11-24 09:11

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

    点赞 打赏 评论

相关推荐 更多相似问题