`
jackroomage
  • 浏览: 1202862 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

group by、order by与having、where,的位置先后。

 
阅读更多

order by 是对数据进行排序,默认是升序ASC,降序用DESC

 

这几条关键字 是有先后顺序的.

where.....group by....having.....order by   (这里的group by 与 having 的位置可以调换,但是having放在后面效率高)!

 

 

1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用

group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要)

例如,有如下数据库表:

A    B
1    abc
1    bcd

1    asdfg

如果有如下查询语句(该语句是错误的,原因见前面的原则)

select A,B from table group by A

 

A     B
       abc
1     bcd

       asdfg

右边3条如何变成一条,所以需要用到聚合函数,如下(下面是正确的写法):

select A,count(B) as 数量 from table group by A
这样的结果就是
A 数量
1    3

 

2. Having和where

where 作用是:在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

having 作用是:筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。例如:

SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)>2

分享到:
评论

相关推荐

    当数据库复杂查询执行顺序与编写顺序原理及sql案例:同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序

    当同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序时的用法

    数据库笔试题之查询语句where,group by,having,order by执行与编写顺序详解

    数据库复杂查询执行顺序与编写顺序原理及sql案例:同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序

    深度分析mysql GROUP BY 与 ORDER BY

    本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表   我现在需要取出每个分类中最新的内容 select * from test group by category_id order by `date` 结果如下   明显。这不是我想...

    Sequelize中用group by进行分组聚合查询

    GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法 SELECT 列名, ...

    group by,having,order by的用法详解

    一,如果一个查询中使用了分组函数,任何不在分组函数中的列或表达式必须要在group by中... select job,avg(sal) from emp having avg(sal)>1500 group by job; 使用having子句时,oracle系统的处理顺序是: 1,首先对

    详解partition by和group by对比

    from > where > group by > having > order by 而partition by应用在以上关键字之后,实际上就是在执行完select之后,在所得结果集之上进行partition。 3.partition by相比较于group by,能够在保留全部数据的基础上...

    关于mysql数据查询中 count()等聚集函数,关键字limit,group by,having的一些用法

    对于初学者来说,一般用学生及其选课等信息这些基本的操作入手。...group by 表示 以······分组, 查询表中被选人数少于3的课程及人数: having 后跟附加条件, 4、其他聚集函数的应用: 最大值max()、最

    Sql开窗函数资源-Dark-Horse-Programmer.zip

    where 2group by 3having 4 select 5 基本查询开窗查询 order by 6 limit 7 其中包括hadoop,hive,hdfs,shell,linux基础,开窗函数学习资料和讲解视频 川在川上曰:靠谱! SaL 的运行顺序 from 1 where 2group by 3...

    PostgreSQL HAVING 子句

    PostgreSQL HAVING 子句 HAVING 子句可以让我们筛选...HAVING 子句必须放置于 GROUP BY 子句后面,ORDER BY 子句前面,下面是 HAVING 子句在 SELECT 语句中基础语法: SELECT column1, column2 FROM table1, table2 WHE

    数据库MySQL基础知识点3

     group by + having:【注】having只能用于group by。而where是用来过滤表数据的  group by + with rollup:分组+小计 限制记录limit:限制取出记录的数量,要写在SQL语句的最后 标准的SQL书写格式

    T-SQL 查询语句的执行顺序解析

    (5)SELECT (5-2) DISTINCT(5-3)TOP()(5-1) <select_list>...(3)GROUP BY <group> (4)HAVING <having> (6)ORDER BY <order>;  每一步都会生成一个虚拟表,该虚拟表会作为下一步的输入。

    T-SQL高级查询

    select count(*), (sex * id) new from student where id > 2 group by sex * id order by sex * id; --group by all 所有分组 按照年龄分组,是所有的年龄 select count(*), age from student group by all age; ...

    SQL语法手册

    SQL各种语法参考 Select 用途: 从指定表中取出指定的列的数据 语法: 解释: 从数据库中选取资料列,...[ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ]

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 ... select count(username) as '重复次数',username from xi group by username having count(*)>1 order by userna

    Mysql-DQL(分组查询)

    【order by 排序的字段】; 注意: 查询列表必须特殊,要求是分组函数和group by后出现的字段 特点: 1、分组查询中的筛选条件分两类 数据源 位置 关键字 分组前筛选 原始表 group by前面 where 分组后筛选 ...

    MYSSQL_MSS_ORACLE经典SQL.pdf

    group by S# having count(*)=(select count(*) from SC where S#='1002'); 15、--删除学习“叶平”老师课的SC表记录; Delect SC from course ,Teacher where Course.C#=SC.C# and Course.T#= Teacher.T# ...

    50个常用SQL语句,很好

    where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where ...

    SQL语法手册SQL语法手册

    SQL语法手册 Select 用途 从指定表中取出指定的列的数据 ...[ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC | DESC ] ] 例: “Persons” 表中的数据有

    数据库查询顺序

    select 列 from 表 where (条件) group by having order by

Global site tag (gtag.js) - Google Analytics