浅聊where和having语句

来源:互联网 发布:seo编辑培训ppt 编辑:程序博客网 时间:2024/05/16 13:01
  • 了解以下三个词在sql中的含义:

    • WHERE:对数据库中的每一行记录进行筛选

    • Having:对结果集(查出来的临时表)中的每一行记录进行筛选。

    • GROUP BY 字段名:对字段名相同的字段进行组合,形成不重名的组。

    • 聚合函数:能够操作列向的单列字段。(理解为多组一列:如SUM()函数)

    • 执行顺序 :where > group by > having

    • 当使用组合之后,每个组合都自动使用了聚合函数。看总结第四点**

    例如:

    select * from A group by name;

    name money a 10 b 20 a 20

    组合后:

    name money a 30 b 20

总结:

区别:
序号 where having 1. 由于只能对原表进行单行筛选,所以不能使用聚合函数; 由于临时表以组合的形式显示(多列一组),所以可以使用聚合函数。 2. 对原表进行筛选。 对临时表进行筛选得到最终的查询结果。 3. 执行单位是单行。 执行单位是组(多行)。(所以你要搞清楚ORDER BY的作用,因为有了ORDER BY 的作用,才有了组的概念。) 4. 且having只能对select语句后面的属性设置筛选条件。(除了聚合函数之外)

第四点举例:

 表名 属性名   A:a,b,c,d例如:select a,b,c from where a>0 group by b having a>b    对select a,b,c from where a>0 group by b having d>a    错

相同点:当没有使用聚合函数的时候,where和having的查询结果没有区别,都是对每一行记录进行筛选 。 (但是having的执行单位还是组,只是每组只有一行记录)

  • 申明:由于是本人个人见解,希望有错误之处希望各位能够帮忙纠正。