MySQL分组(GROUPBY)
语法格式:
GROUP BY { <;列名>|<;表达式>|<;位置> } [ASC|DESC]
<;列名>:指定⽤于分组的列。可以指定多个列,彼此间⽤逗号分隔。
<;表达式>:指定⽤于分组的表达式。通常与聚合函数⼀块使⽤,例如可将表达式COUNT(*) AS ' ⼈数 '作为 SELECT 选择列表清单的⼀项。<;位置>:指定⽤于分组的选择列在 SELECT 语句结果集中的位置,通常是⼀个正整数。例如,GROUP BY 2 表⽰根据 SELECT 语句列清单上的第 2 列的值进⾏逻辑分组。
ASC|DESC:关键字 ASC 表⽰按升序分组,关键字 DESC 表⽰按降序分组,其中 ASC 为默认值,注意这两个关键字必须位于对应的列名、表达式、列的位置之后。
注意:GROUP BY ⼦句中的各选择列必须也是 SELECT 语句的选择列清单中的⼀项。
对于 GROUP BY ⼦句的使⽤,需要注意以下⼏点:
GROUP BY ⼦句可以包含任意数⽬的列,使其可以对分组进⾏嵌套,为数据分组提供更加细致的控制。
GROUP BY ⼦句列出的每个列都必须是检索列或有效的表达式,但不能是聚合函数。
若在 SELECT 语句中使⽤表达式,则必须在 GROUP BY ⼦句中指定相同的表达式。
除聚合函数之外,SELECT 语句中的每个列都必须在 GROUP BY ⼦句中给出。
若⽤于分组的列中包含有 NULL 值,则 NULL 将作为⼀个单独的分组返回;若该列中存在多个 NULL 值,则将这些 NULL 值所在的⾏分为⼀组。
实例:
根据 dept_id 对 tb_students_info 表中的数据进⾏分组,将每个学院的学⽣姓名显⽰出来,输⼊的SQL语句和执⾏结果如下所⽰。
mysql>SELECT dept_id,GROUP_CONCAT(name)AS names
->FROM tb_students_info
->GROUP BY dept_id;
groupby分组+---------+---------------+
| dept_id | names        |
+---------+---------------+
|1| Dany,Jane,Jim |
|2| Henry,John    |
|3| Green,Thomas  |
|4| Susan,Tom    |
|6| Lily          |
+---------+---------------+
5rows in set(0.02 sec)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。