精华内容
下载资源
问答
  • 主要给大家介绍了关于SQL中过滤条件放on和where中的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
  • where和having的区别

    千次阅读 多人点赞 2018-10-12 11:33:09
    where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且“where”后面不能写“聚合函数”。 “having”是一个过滤声明,是在查询数据库结果返回之后进行...

    1.类型

    “where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且“where”后面不能写“聚合函数”。

    “having”是一个过滤声明,是在查询数据库结果返回之后进行过滤,即在结果返回值后起作用,并且“having”后面可以写“聚合函数”。

    where、聚合函数、having在from后面的执行顺序:
        where>聚合函数(sum,min,max,avg,count)>having

    实例:用group by来比较二者

    若须引入聚合函数来对group by 结果进行过滤 则只能用having。

    select sum(score) from student where sex="man" group by name having sum(score)>90;

    注意事项 :
    1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。
    2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
    3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

    2.使用角度

    where后面不能使用聚合函数的原因是where的执行顺序在聚合函数之前。

    3.实例

    (1) where和having均可使用:

    select score name from student where score>60;

    select score name from student having score>60;

    可用having的原因是已经筛选出score字段,在这种情况下是和where等效的。

    (2) 只能用where、不能用having

    select score name from student where sex="man";  正确的

    select score name from student having sex="man";  错误的,因为前面没有筛选sex。

    (3) 只能用having、不能用where

    select  goods_category_id,avg(goods_price) as ag from goods_table group by goods_category having ag>100; 正确的

    select goods_category_id,avg(goods_price) as ag from goods_table where ag>100 group by goods_category;  错误的

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

     

     

     

    展开全文
  • left join 过滤条件写在on后面写在where 后面的区别
  • mysql having和where区别

    千次阅读 2019-08-16 18:17:41
    having子句跟where的使用方法作用是一样的!唯一区别是为了区别where:其实是where只能跟着from后,having只能跟着group by后。即:having是对一个表的数据进行了分组之后,对“组信息”进行相应 条件筛选;可见:...

    having子句跟where的使用方法和作用是一样的!

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

    即:

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

    可见:

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

    举例:

    找出平均价超过6000的品牌数据:

    结果为:

    也可以写成:

    结果:

    总结





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

     

    区别1

     

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

     

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

     

    区别原理

    区别2

     

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

     

    区别3

     

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

    先分组,再判断

     

    展开全文
  • sql中where和having 区别

    2014-05-19 22:15:35
    sql中where和havingsql中where和having区别
  • Sql的join和where区别

    千次阅读 2019-06-19 18:30:52
    知乎:sql连接查询中on筛选与where筛选的区别 join动作步骤 笛卡尔积(是逻辑步骤还是真实步骤?如果是真实步骤实在太占内存) 应用on筛选条件,注意 left join 不影响左边的基表,只影响右边的外表 添加外部...

    知乎:sql连接查询中on筛选与where筛选的区别

    join动作步骤

    • 笛卡尔积(是逻辑步骤还是真实步骤?如果是真实步骤实在太占内存)

    • 应用on筛选条件,注意 left join 不影响左边的基表,只影响右边的外表

    • 添加外部行,left join后行数应该和基表的行数相等,在第二步没有关联起来的,右边加上null

    • 应用where筛选条件


    例子

    表main

    在这里插入图片描述

    表ext

    在这里插入图片描述

    
    select * from main left join ext on main.id=ext.id and ext.address<>'杭州';
    
    

    结果就错了:
    在这里插入图片描述

    因为如上所说的第三步,加上了null的对应

    改为如下就可以了

    
    select * from main left join ext on main.id=ext.id where ext.address<>'杭州';
    
    

    Leetcode 601 体育馆的人流量

    这个题目是很好的表关联的考察

    
    X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)。
    
    
    
    请编写一个查询语句,找出人流量的高峰期。高峰期时,至少连续三行记录中的人流量不少于100。
    
    
    
    例如,表 stadium:
    
    
    
    +------+------------+-----------+
    
    | id   | visit_date | people    |
    
    +------+------------+-----------+
    
    | 1    | 2017-01-01 | 10        |
    
    | 2    | 2017-01-02 | 109       |
    
    | 3    | 2017-01-03 | 150       |
    
    | 4    | 2017-01-04 | 99        |
    
    | 5    | 2017-01-05 | 145       |
    
    | 6    | 2017-01-06 | 1455      |
    
    | 7    | 2017-01-07 | 199       |
    
    | 8    | 2017-01-08 | 188       |
    
    +------+------------+-----------+
    
    
    
    对于上面的示例数据,输出为:
    
    
    
    +------+------------+-----------+
    
    | id   | visit_date | people    |
    
    +------+------------+-----------+
    
    | 5    | 2017-01-05 | 145       |
    
    | 6    | 2017-01-06 | 1455      |
    
    | 7    | 2017-01-07 | 199       |
    
    | 8    | 2017-01-08 | 188       |
    
    +------+------------+-----------+
    
    
    
    

    sql代码如下
    思路:自体表2次join,考虑3种情况,第一种是在第一个,第二种是在中间,第三种是在第三个,这样会有重复的,所以查询的时候加了一个去重

    
    
    select distinct a.* from stadium a join stadium b join stadium c on 
    
    (a.id+1=b.id and b.id+1=c.id
    
    or
    
    a.id-1=b.id and b.id-1=c.id
    
    or
    
    a.id-1=b.id and a.id+1=c.id)
    
    where a.people>=100 and b.people>=100 and c.people>=100
    
    order by a.id;
    
    

    思考题

    如果采用如下的语句形式,会如何?

    
    select a.*,b.* from a  left join b on 1=0
    
    

    这样的语句会有返回值,而且a中所有行都会返回,而b中全部填null

    展开全文
  • 现在想要查询出汽车系 软件系的个数,这就用到分组 SELECT xname,COUNT(*) FROM depart GROUP BY xname 1.count()是聚合函数,对于返回的结果集,一行行地判断,累计值加1,最后返回累计值,count()、count(主键ID...

    Group By分组

    depart表
    在这里插入图片描述
    现在想要查询出汽车系 和软件系的个数,这就用到分组

    SELECT xname,COUNT(*) FROM depart
    GROUP BY xname
    

    1.count()是聚合函数,对于返回的结果集,一行行地判断,累计值加1,最后返回累计值,count()、count(主键ID)和count(1)表示返回满足条件的结果集的总行数。

    常用聚合函数
    count() 计数
    sum() 求和
    avg() 平均数
    max() 最大值
    min() 最小值

    2.GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,
    在这里插入图片描述
    查询结果就出来了,汽车系的为2个,软件系的为1个… 查询结果也正确…分组完成

    where和having的区别

    相同点:where和having都是sql用于条件判断的
    不同点:进行group by分组之后 然后在进行条件判断,这个时候必须用having进行判断,不能用where判断,
    分组之后一定不能出现where

    展开全文
  • 表连接on 和where区别

    千次阅读 2019-08-03 18:20:55
    最近项目中碰到一个有关多表链接on 和where条件下数据的变换问题。做个简单整理: select count(*) from “SAPHANADB”.“CDHDR” SCR inner JOIN “SAPHANADB”.“CDPOS” SCS ON SCR.MANDANT = SCS.MANDANT AND ...
  • WHERE和HAVING子句有什么区别

    千次阅读 2019-09-12 10:27:00
    Where和Having有何不同? WHERE子句 HAVING子句 结合两者:WHERE和HAVING 在本文中学习何时使用WHERE和HAVING。两者都执行类似的功能,但用于不同的目的! 本文的所有示例都基于Microsoft SQL Server ...
  • where子句having子句区别

    千次阅读 2017-10-21 17:21:34
    where子句having子句的区别:  1.where 不能放在group by后面  2.having 是跟group by连在一起用的,放在group by 后面,此时的作用相当于where  3.where 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而...
  • MyBatis中的标签和where子句的区别 <select id="selectAll" resultMap="BaseResultMap" parameterType="***"> select <include refid="Base_Column_List"></include> from sys_log <where&...
  • sql语句中过滤条件where和having的区别

    千次阅读 2019-04-29 14:43:58
    where和having的区别 Where是一个约束声明,使用Where约束来自数据库的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,...
  • sql where on 的区别

    千次阅读 2019-08-01 13:27:50
    在使用left jion时,on和where条件的区别如下: 1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时...
  • 在使用left jion时,on和where条件的区别如下: 1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经...
  • having和where区别

    万次阅读 2019-03-07 21:43:31
    在一个sql语句中可以有where子句having子句。having 与where 子句类似,均用于设置限定条件     where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不...
  • linux指令which和whereis的区别

    千次阅读 2019-08-07 16:14:26
     whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)源代码文件(参数-s)。如果省略参数,则返回所有信息。  whereis命令的使用实例:  #whereis vim ...
  • SQL-where和having的区别

    千次阅读 2021-02-07 18:59:01
    SQL-where和having的区别 概念 where where是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,再返回结果前起作用,并且where后不能使用“聚合函数”。 聚合函数 对一组值执行计算,并...
  • 左右连接中where和and的区别

    千次阅读 2016-08-19 19:57:02
    select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno and e.job='... select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno where e.job='MANAGER'; 在右连
  • HAVING和WHERE区别

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

    千次阅读 2018-11-15 16:39:38
    博主在写sql的时候,遇到了要用orwhere的情况,关键这个orwhere的条件是一个数组,就是要用orwhereIn的方法来写。。反正在这之前博主是一直不知道, 竟然还有orWhereIn的方法,反正是实现了需求。不过越想越不舒服,...
  • SQL 面试题:WHERE HAVING、ON 有什么区别

    万次阅读 多人点赞 2020-04-09 07:42:16
    SQL 中WHERE和HAVING的区别在于:WHERE子句在GROUP BY分组聚合函数之前对数据行进行过滤;HAVING子句对GROUP BY分组聚合函数之后的数据行进行过滤。 SQL 中WHERE和ON的区别在于:对于内连接查询,WHERE和ON中的...
  • MYSQL on和where区别

    万次阅读 多人点赞 2019-09-01 17:31:19
    多表查询语法结构: ...在多表查询时,ON和where都表示筛选条件,on先执行,where后执行。 区别: 外连接时,on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。而wh...
  • WHERE和HAVING的区别?

    千次阅读 多人点赞 2018-03-06 15:44:43
    where子句having子句一样,都是用于条件判断的.这也是很多人区分不开的主要原因.不知道什么时候用什么的子句判断.既然定义了这两个判断子句,就肯定是有区别的,下面从四方面解释一下1. where子句having子句都可以...
  • Mysql where和and的区别

    千次阅读 2019-06-07 22:46:17
    在使用left jion时,and和where条件的区别如下: 1、and条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。右边的表关联不上,右边表的字段显示null; 2、where条件是在临时...
  • Left join后用and和where区别

    千次阅读 2018-12-18 22:03:06
    on后用where连接,where作为筛选条件,则是匹配两个条件相同的结果集。on后用where连接,where作为筛选条件,则是匹配两个条件相同的结果集。 如下图一,on后的and使用错误导致两个筛选条件没有生效。图二为正确...
  • SQL中ON和WHERE区别

    万次阅读 多人点赞 2019-03-04 15:13:07
    SQL中ON和WHERE区别 数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用leftjion时,on和where条件的区别如下: 1、on条件是在生成临时表时使用的条件...
  • SQL语句中join on和where区别

    千次阅读 多人点赞 2018-05-10 17:36:00
    关于join on后面的条件和where 后面的条件,是基于left join、right join、full join而言的,inner join ?跟内连接无关啦,首先,我们知道SQL的执行循序是:SQL的执行顺序:from join on where group by having ...
  • MySQL - ON & WHERE 条件区别和执行顺序

    千次阅读 2018-10-30 15:18:34
    在使用left jion时,on和where条件的区别如下: 1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对临时表进行过滤的条件。这时...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,897,045
精华内容 1,158,818
关键字:

where和where的区别