精华内容
下载资源
问答
  • having和where区别

    2021-01-20 15:34:13
    having和where区别: having是在分组后对数据进行过滤 where是在分组前对数据进行过滤 having后面可以使用聚合函数 where后面不可以使用聚合 具体实例说明: 区别1 where是从数据表中的字段直接进行的筛选的。 ...

    having和where区别:
    having是在分组后对数据进行过滤
    where是在分组前对数据进行过滤
    having后面可以使用聚合函数
    where后面不可以使用聚合

    具体实例说明:

    区别1
    where是从数据表中的字段直接进行的筛选的。

    having是从 前面筛选的字段再筛选

    eg:  select goods_price,goods_name from goods having  goods_price > 100
    
                     等价于  
    
       select goods_price,goods_name from goods where goods_price > 100
    
    select goods_name,goods_number from goods having  goods_price > 100
    

    // 报错!!!因为前面并没有筛选出 goods_price 字段

    区别2

    having子句中可以使用字段别名,而where不能使用

    区别3

    having能够使用统计函数,先分组,再判断(having),但是where不能使用

    展开全文
  • 区别唯一区别是为了区别where:其实是where只能跟着from后,having只能跟着group by后。即:having是对一个表的数据进行了分组之后,对“组信息”进行相应 条件筛选;可见:having筛选时,只能根据select子句中可...

    区别

    唯一区别是为了区别where:其实是where只能跟着from后,having只能跟着group by后。

    即:

    having是对一个表的数据进行了分组之后,对“组信息”进行相应 条件筛选;

    可见:

    having筛选时,只能根据select子句中可出现的字段(数据)来进行条件设定。

    having子句与where子句一样,都是用于条件判断的。

    区别1

    where是判断数据从磁盘读入内存的时候

    having是判断分组统计之前的所有条件

    区别2

    having子句中可以使用字段别名,而where不能使用

    区别3

    having能够使用统计函数,但是where不能使用

    一、MySQL的group by语句

    1、group by是将具有相同的进行分组,化成一块数据集合,之后配合聚合函数进行数据处理。比如:全校学生成绩表(学号,姓名,班级,成绩….),现在我需要将按照相同的班级进行分类,之后计算出每个班的最高的成绩。

    (1)创建好student_score表

    SID SNAME CLASS total_score

    (2)按照班级进行分类:以班级分类为主

    按照班级分类:计算出每个班的最高的成绩。

    select CLASS, SNAME from student_score group by CLASS, SNAME;

    select CLASS, MAX(TOTAL_SCORES) AS TOP from student_score group by CLASS;

    2、group by需要注意的几点

    group by语句通常配合聚合函数SUM、MAX、MIN等使用处理数据。

    group by语句中使用的聚合函数处理数据是group by分组完毕之后聚合函数是对分组数据进行处理的,不是对整个表。比如group by之后一班的成绩有250、251、253、254。聚合函数MAX()是针对一班这四个数据计算的。并不是MAX()整个表。

    select后面的查询字段要包含在group by后面的字段中。

    select后面的列要包含在group by后面的列中。

    二、MySQL的having语句

    1、having与where的区别

    (1)where:

    是作用在查询结果进行分组之前,过滤掉不符合条件的数据。

    where中不能包含聚合函数。(注意是:where后面子句不能有聚合函数,而在含有where中可以使用聚合函数)

    作用在group by和having字句前

    是作用于对表与视图

    (2)having:

    是作用在查询结果分组之后,筛选满足条件的组,过滤掉数据。

    通常跟聚合函数一起使用。

    having子句在聚合后对组记录进行筛选。

    是作用于分组

    2、使用having例子

    (1)计算出每个班级的总成绩

    SELECT CLASS,SUM(TOTAL_SCORES) FROM student_score GROUP BY CLASS;

    (2)筛选出总成绩大于505的班级

    SELECT CLASS,SUM(TOTAL_SCORES) FROM student_score GROUP BY CLASS HAVING SUM(TOTAL_SCORES)>505;

    这里用where SUM(TOTAL_SCORES)>505的话,将会出错,因为表中根本没有总成绩分数这项,这是分组之后才有的

    3、使用having与where联立的例子

    利用having与where联立查询

    实例:查询班级中分数大于250的学生的总成绩大于531的班级有哪几个班。

    执行顺序为:

    开始 -> where行记录筛选 -> group by分组 -> 聚合函数(sum、max、min)计算 -> having分组筛选->结束

    具体的如下:

    where筛选学生成绩大于250的所有学生。

    group by分组班级

    sum计算分组班级中学生的总分数

    having筛选总成绩大于531的班级

    具体代码如下:

    -- 1.WHERE筛选出分数大于250的学生

    SELECT CLASS,SNAME,TOTAL_SCORES FROM student_score WHERE TOTAL_SCORES>250;

    -- 4.SUM计算之后,having筛选总成绩大于531的分组

    SELECT CLASS,SUM(TOTAL_SCORES) AS SUM_SCORE FROM student_score

    WHERE TOTAL_SCORES>250

    GROUP BY CLASS HAVING SUM(TOTAL_SCORES)>531;

    展开全文
  • mysql表连接时on和where区别 数据库在连接两张表时都会生成一张中间表,将这张中间表返回给用户。left join时on条件指生成临时表时的条件,它不管on条件是否为真,都会返回左表的记录。where条件是临时表生成后再对...

    mysql表连接时on和where区别

    数据库在连接两张表时都会生成一张中间表,将这张中间表返回给用户。left join时on条件指生成临时表时的条件,它不管on条件是否为真,都会返回左表的记录。where条件是临时表生成后再对临时表做过滤。对于inner join,on和where返回的结果是一样的,但是效率不同。on效率快,where效率慢!!!

    展开全文
  • DataBase-group by, having where 区别

    group by作用

    在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。

    having和where区别

    当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组,并且是分组之后的的过滤

    where 与 having 子句类似,均用于设置限定条件,但是 where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚合函数,使用where条件显示特定的行。

    order by

    使用order by排序时order by子句置于group by 之后 并且 order by 子句的排序标准不能出现在select查询之外的列。

    例子:

    返回按照name分组后,每组条目大于6的分组name,并且按分组name排序

    select name from dbo.M_OperationAuthority group by name having Count(*)>6 order by name

    结果如下所示:
    这里写图片描述

    展开全文
  • on和where区别

    2019-08-22 16:12:02
    在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经...
  • inner join 和where 区别

    2011-08-31 16:01:27
    inner join 和where 区别 1 .WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE 和INNER JOIN产生的连接关系,没有...
  • 分享关于mysql中的where和having子句的区别,本文主要分享对象为刚刚接触sql的新人,下面将结合实际案例分析:下面以一个例子来具体的讲解:1. where和having都可以使用的场景1)select addtime,name from dw_users ...
  • sql中having和where区别

    2014-01-07 16:11:12
    having和where区别: 1.不能在where子句中过滤组,where子句仅用于过滤行。过滤组必须使用having子句。 2.不能在where子句中使用组函数,having子句才可以使用组函数。 where 子句的作用是在对查询结果进行分组...
  • 两表join时的on和where区别 表A join 表B----条件–on—> 临时表—where—> 结果表 on是作为临时表的筛选条件,where作为最终表的筛选条件 总结一: 1.where 是在两个表join完成后,再附上where条件; 2.and 则...
  • MySQL之Where和Having的区别 对于使用where和having,相信很多人都有过困扰,今天就来讲一下我对where和having的认识: 从整体声明的角度来理解: Where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询...
  • 在join后面可以接on条件和where条件,在这里我主要就是说这两者之间的差别建立两张简单的用来测试的表并添加数据,如下所示,一张表名为id_name,另一张表名为id_age首先看看不添加条件——t2.age ='22'时的结果...
  • mysql中having和where区别

    2020-02-25 10:37:27
    执行的顺序不一样 ...having子句可以用集合函数(sum、count、avg、maxmin),而where子句不可以 范例 人数大于2的部门 select department_id,count(*) 人数 from employees group by depart...
  • SQL Having和WHERE区别

    2020-02-28 18:57:10
    一、select查询 SELECT [ALL|DISTINCT] <...[WHERE <条件表达式>] [GROUP BY <列名 1> [HAVING] <条件表达式>] [ORDER BY <列名 2> [ASC|DESC]] 1.对于group by: 主要是用来通过...
  • having和where有相似之处但也有区别,都是设定条件的语句。 在查询过程中,聚合语句(sum,min,max,avg,count),要比having子句有限执行。 在查询过程中,要先执行where ,在执行聚合语句(sum,min,max,avg,count)...
  • left join中 on 和where区别

    千次阅读 2019-01-28 18:06:25
    而往往在使用左右连接时,筛选条件on和where在使用时容易出错,这次我们就以left join为例,简单讲述下on和where的用法。 首先我们要清楚左右连接的原理:在通过连接两张或多张表来返回记录时,都会生成一张中间的...
  • inner join和where区别

    千次阅读 2014-02-11 17:32:43
    (其他JOIN参数也是显性连接)WHERE INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用...
  • left join inner join on 和where区别

    千次阅读 2019-04-20 09:57:20
    在使用left join 时,on和where条件的区别: 1:on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2:where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经...
  • left join on和where区别

    2019-04-11 18:02:00
    left join中关于where和on条件的几个知识点: 1.多表left join是会生成一张临时表,并返回给用户 2.where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件的记录,是真正的不符合就过滤掉。 3.on...
  • #这种情形where和having等价 SELECT NAME,age FROM student WHERE age>20 SELECT NAME,age FROM student HAVING age>20 #只能用where SELECT NAME,address FROM student WHERE age =26; SELECT NAME,address ...
  • Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。 “Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在...
  • 在用left join中,on和where条件的区别如下: (1)on条件是在生成中间表时使用的条件,它不管on中的条件是否为真,都会返回左表中的记录,右表中的记录如果不符合on条件,则显示为空。 (2)where条件是在中间表...
  • 原文参考:... having where 参考http://blog.csdn.net/yexudengzhidao/article/details/54924471 having是对组进行过滤。where是对行进行过滤。 *** 理解这个至关重要 *** 执行顺序: where ...
  • essay文章表跟essay_comment评论表的关联是 essay.id=essay_comment.essay_id SELECT e.id, e.app_id, e.deleted ,ec . * FROM `essay` e LEFT JOIN `essay_comment` ec ON e.id = ec.essay_id ...WHERE app_id

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,612
精华内容 2,644
关键字:

和where区别