精华内容
下载资源
问答
  • 分享关于mysql中的where和having子句的区别,本文主要分享对象为刚刚接触sql的新人,下面将结合实际案例分析:下面以一个例子来具体的讲解:1. where和having都可以使用的场景1)select addtime,name from dw_users ...

    2f4e2e5a9f1c9b3d619f2d3d84d58516.png

    分享关于mysql中的where和having子句的区别,本文主要分享对象为刚刚接触sql的新人,下面将结合实际案例分析:

    下面以一个例子来具体的讲解:

    1. where和having都可以使用的场景

    1)select addtime,name from dw_users where addtime> 1500000000

    2)select addtime,name from dw_users having addtime> 1500000000

    解释:上面的having可以用的前提是我已经筛选出了addtime字段,在这种情况下和where的效果是等效的,但是如果我没有select addtime就会报错!!因为having是从前面筛选的字段再筛选,而where是从数据表中的字段直接进行的筛选的。

    2. 只可以用where,不可以用having的情况

    1) select addtime,name from dw_users where addtime> 1500000000

    2) select phone,name from dw_users having addtime> 1500000000 //报错!!!因为前面并没有筛选出addtime字段

    3. 只可以用having,不可以用where情况

    查询每种category_id商品的价格平均值,获取平均价格大于100元的商品信息

    1)select category_id , avg(price) as ag from dw_goods group by goods_category having ag > 100

    2)select category_id , avg(price) as ag from dw_goods where ag>100 group by goods_category //报错!!因为from dw_goods 这张数据表里面没有ag这个字段

    注意:where 后面要跟的是数据表里的字段,如果我把ag换成avg(price)也是错误的!因为表里没有该字段。而having只是根据前面查询出来的是什么就可以后面接什么。

    感觉有用就点点关注表示对作者的支持谢谢。

    展开全文
  • 区别唯一区别是为了区别where:其实是where只能跟着from后,having只能跟着group by后。即:having是对一个表数据进行了分组之后,对“组信息”进行相应 ...区别1where是判断数据从磁盘读入内存时候having是判断...

    区别

    唯一区别是为了区别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;

    展开全文
  • where having 的区别

    2017-10-11 17:51:41
    group by where 的区别
    1. where 和 group by 都是条件,条件都不能用别名

      查询出平均工资高于2000的部门
      SELECT e.deptno,AVG(e.sal) FROM emp e GROUP BY e.deptno HAVING AVG(e.sal) >2000; 
      查询出每个部门工资高于1000的员工的平均工资
      SELECT e.deptno,AVG(e.sal) asal FROM emp e WHERE e.sal >1000 GROUP BY e.deptno;
      查询出每个部门工资高于1000且平均工资高于2000的部门和员工
      SELECT e.deptno,AVG(e.sal) FROM emp e WHERE e.sal>1000 GROUP BY e.deptno HAVING  AVG(e.sal) >2000;
    2. select 后面出现的原始列必须在 group by后面出现,group by 后面出现的原始列可以不在 select 后面出现

      每个部门的平均工资
      SELECT e.deptno,AVG(e.sal) FROM emp e GROUP BY e.deptno,e.sal;
    3. where 是过滤分组前的数据,必须放在 group by 之前;having 是过滤分组后的数据,必须放在group by 之后

      查询出每个部门工资高于1000且平均工资高于2000的部门和员工(错误写法)
      SELECT e.deptno,AVG(e.sal) FROM emp e WHERE AVG(e.sal)>1000 GROUP BY e.deptno HAVING  AVG(e.sal) >2000;
    展开全文
  • np.where和torch.where的使用区别

    万次阅读 2019-01-22 10:41:21
    两者都是三个输入参数,第一个是...区别在于,torch要将设置值全部改为Tensor类型 mask_true = torch.where(torch.isnan(y_true), torch.full_like(y_true, 0), torch.full_like(y_true, 1)) mask_true = np.w...
    两者都是三个输入参数,第一个是判断条件,第二个是符合条件的设置值,第三个是不满足条件的设置值。

    区别在于,torch要将设置值全部改为Tensor类型的

    mask_true = torch.where(torch.isnan(y_true), torch.full_like(y_true, 0), torch.full_like(y_true, 1))
    mask_true = np.where(np.isnan(y_true), 0, 1)

     

    展开全文
  • where和having的区别

    2020-05-13 15:12:43
    解释:上面的having可以用的前提是我已经筛选出了age字段,在这种情况下和where的效果是等效的,但是如果我没有select age就会报错!!因为having是从前面筛选的字段再筛选,而where是从数据表中的字段直接进行的...
  • where having的区别

    2018-12-08 14:03:16
    where 和 having where、聚合函数、having 在from后面的执行顺序: where > 聚合函(sum,min,max,avg,count) >... 本质的区别就是where筛选的是... where和having都可以使用的场景: select ...
  • WHERE ON 的区别

    2020-07-14 17:06:00
    WHERE ON 的区别 在使用sql语句连接操作时,关联两个表或者多个表来返回查询结果时数据库会返回一个临时表给用户, 比如LEFT JOIN WHERE ON都是过滤条件,区别在于: ON条件是在生成临时表时的过滤条件,...
  • WHERE和HAVING的区别

    2019-12-17 18:44:20
    WHERE和HAVING的区别在于: where 子句的作用是对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。 having 子句的作用是筛选...
  • HAVING和WHERE的区别

    千次阅读 2017-10-15 20:59:36
    HAVING和WHERE的区别是什么? WHERE和HAVING的有什么区别? HAVING和WHERE的有什么不同?having和where都是用来过滤数据的, 两者一点重要的区别在于 having用在数据分组进行过滤,而 where在分组之前来选择符合...
  • having和where的区别

    2020-03-30 17:19:48
    两者区别: 本质的区别就是where筛选的是数据库表...1. where和having都可以使用的场景: select goods_price,goods_name from sw_goods where goods_price>100 select goods_price,goods_name from sw_goods h...
  • where和having 的区别

    2018-09-27 09:47:20
    where和having 的区别: where:数据表中存在的字段 having:查询结果集中存在的字段 两者使用不当出现的问题: Invalid use of group function即“集函数的无效用法” 错句示例: SELECT sname AS '优秀学生...
  • 1.类型: ...where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前, 如下面这个sql语句:select sum(score) from student group by student.sex where sum(student.age)>100; havi
  • On和Where的区别

    2019-09-03 20:16:12
    On和Where的区别 两个表连接时用On 在使用left join时,On和Where的区别如下: 1.on条件是在生成临时表时使用的条件,它不管on中的条件是否为真都会返回左表中的记录。 2.where条件是在临时表生成好后,再对临时表...
  • WHERE和HAVING关键字的区别 WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。 HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。
  • where having的区别

    2020-01-20 17:21:00
    "Where"是一个约束声明,使用Where来约束来之数据库数据,Where是在结果返回之前起作用,且Where中不能使用聚合函数。 "Having"是一个过滤声明,是在查询返回结果集以后对查询结果进行过滤操作,在Having中...
  • 关于where on 的区别 其实在用join里面有不同 这几天刷了牛客网里面的sql题,里面大部分是sqlite题,我觉得sqlitemysql区别不大 关于where on 一开始我也分不太清有什么区别,后来看了一些大佬的才明白一点 ...

空空如也

空空如也

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

where和where的区别