`
jackroomage
  • 浏览: 1222475 次
  • 性别: 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

分享到:
评论

相关推荐

    order by 、group by 、having的用法

    - `GROUP BY` 在 SQL 查询中的位置通常位于 `WHERE` 子句之后,`ORDER BY` 之前。 3. **HAVING** 子句: - `HAVING` 是在 `GROUP BY` 分组后的过滤条件,用于筛选满足特定条件的分组。这与 `WHERE` 子句不同,`...

    order_by_、group_by_、having的用法

    在SQL命令格式中,通常的顺序是:`SELECT`、`INTO`(如果需要创建新表)、`FROM`、`WHERE`(如果需要过滤数据)、`GROUP BY`、`HAVING`(如果需要分组过滤)、`ORDER BY`(如果需要排序)。需要注意的是,`HAVING`和...

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

    特别是在WHERE、GROUP BY、HAVING、ORDER BY同时出现时,执行顺序和编写顺序变得尤为重要。本文将详细介绍WHERE、GROUP BY、HAVING、ORDER BY的执行顺序和编写顺序,以及它们之间的关系。 一、WHERE子句的执行顺序 ...

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

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

    order_by_、group_by_、having的用法区别.doc

    ### SQL中的ORDER BY, GROUP BY, HAVING 的用法区别详解 #### 一、概述 在SQL查询语言中,`ORDER BY`, `GROUP BY`, 和 `HAVING` 是三个非常重要的概念,它们分别用于对查询结果进行排序、分组以及在分组后进一步...

    Mysql中order by、group by、having的区别深入分析

    4. 在 SELECT 语句的标准格式中,WHERE 子句先于 GROUP BY,GROUP BY 先于 HAVING,最后是 ORDER BY。 了解并熟练运用这三个子句,对于编写高效、准确的 SQL 查询至关重要,能够帮助我们从海量数据中提取出有价值的...

    深度分析mysql GROUP BY 与 ORDER BY

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

    on与where、group by的用法

    - `GROUP BY`用于对数据进行分组和汇总,`HAVING`子句用于对汇总结果进行过滤,而`ORDER BY`则用于对结果集进行排序。 通过理解这些关键词的基本用法及其区别,我们可以更高效地编写SQL查询语句,从而更好地管理和...

    group by的详解

    3. **排序顺序**:当同时使用`GROUP BY`、`HAVING`和`ORDER BY`时,`ORDER BY`通常放在最后。在示例中,`ORDER BY p.name`确保结果按供应商名字排序,而Oracle会默认按照`GROUP BY`中的列顺序进行排序,即先按年份、...

    sql中where和having 区别

    3. `WHERE`不能与聚合函数一起直接使用,而`HAVING`专门处理聚合函数的结果; 4. 不能用`WHERE`替换`HAVING`来过滤分组后的数据,反之亦然。 理解这两个子句的不同用途可以帮助你编写出更精确和高效的SQL查询,特别...

    【mysql知识点整理】— order by 、group by 出现Using filesort原因详解

    在一个SQL查询中,执行顺序通常是这样的:`FROM` - `WHERE` - `GROUP BY` - `HAVING` - `SELECT` - `ORDER BY`。当`ORDER BY`和`GROUP BY`同时存在时,`GROUP BY`先于`ORDER BY`执行,这意味着数据首先按`GROUP BY`...

    mysql group by having 实例代码

    `HAVING`与`WHERE`类似,但`WHERE`是在数据分组前进行条件筛选,而`HAVING`则是在分组后进行筛选。如果我们想找出工作天数超过一天的员工,可以这样写: ```sql SELECT name, COUNT(*) FROM employee_tbl GROUP BY ...

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

    `WHERE`,`GROUP BY`,`HAVING`,`ORDER BY` 的执行顺序: - `WHERE` 子句首先对原始数据进行过滤。 - 接着,`GROUP BY` 子句将数据分组。 - 然后,分组函数(如`AVG`,`MAX`等)应用于每个分组。 - `HAVING` 子句对...

    sql中 order by 和 group by的区别

    `GROUP BY` 必须放在 `WHERE` 子句之后,但在 `ORDER BY` 之前。例如: ```sql SELECT Department, COUNT(EmployeeID) FROM Employees GROUP BY Department; ``` 这个查询将返回每个部门的员工数量,将数据...

    group by用法.doc

    `GROUP BY` 语句是SQL中用于对数据进行分组的重要工具,通常与聚合函数如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等一起使用。其基本概念是根据一个或多个列的值将数据分为不同的组,然后对每个组应用聚合函数以得出每...

Global site tag (gtag.js) - Google Analytics