MySQL中的分组和排序操作(mysql中分组和排序)

MySQL中的分组和排序操作

MySQL是一款开源的关系型数据库管理系统,被广泛用于各种Web应用程序的开发。在数据库操作中,分组和排序操作是非常常见的,这篇文章将向您介绍如何使用MySQL实现这些操作。

一、分组操作

1. 概述

MySQL中的分组操作可以将查询结果按照指定的列进行分组,从而得到按照条件分组后的汇总结果。

2. 分组语法

SELECT 列1, 列2,…,列n, AGG_FUNC(列m)

FROM 表名

WHERE 条件

GROUP BY 列1, 列2,…,列n;

其中,列1, 列2,…,列n是用于分组的列,AGG_FUNC(列m)是聚合函数,例如SUM、COUNT、AVG等。注意:分组列和聚合函数列的列名与列m不相同。

3. 例子

例如,我们有一个“score”表,结构如下:

create table score(

stu_id int(11),

course varchar(20),

score int(11)

);

用以下数据填充:

insert into score values(1, ‘math’, 90);

insert into score values(1, ‘chinese’, 80);

insert into score values(2, ‘math’, 85);

insert into score values(2, ‘chinese’, 95);

insert into score values(3, ‘math’, 92);

insert into score values(3, ‘chinese’, 87);

现在,我们要统计每个学生的总分,可以使用以下SQL语句:

SELECT stu_id, SUM(score)

FROM score

GROUP BY stu_id;

结果如下:

stu_id SUM(score)

1 170

2 180

3 179

二、排序操作

1. 概述

MySQL中的排序操作可以将查询结果按照指定的列进行排序,从而得到按照条件排序后的结果集。

2. 排序语法

SELECT 列1, 列2,…,列n

FROM 表名

ORDER BY 列名1 [ASC|[DESC]], 列名2 [ASC|[DESC]],…,列名n [ASC|[DESC]];

其中,列名1、列名2、…、列名n是用于排序的列,ASC是升序排序,DESC是降序排序。

3. 例子

例如,我们有一个“students”表,结构如下:

create table students(

id int(11) primary key,

name varchar(20),

age int(11)

);

用以下数据填充:

insert into students values(1, ‘Tom’, 20);

insert into students values(2, ‘Jerry’, 18);

insert into students values(3, ‘Mike’, 21);

现在,我们要按照年龄进行升序排序,可以使用以下SQL语句:

SELECT * FROM students ORDER BY age ASC;

结果如下:

id name age

2 Jerry 18

1 Tom 20

3 Mike 21

当然,我们也可以按照多列排序,例如先按照年龄升序排列,年龄相同的再按照姓名进行升序排序:

SELECT * FROM students ORDER BY age ASC, name ASC;

结果如下:

id name age

2 Jerry 18

1 Tom 20

3 Mike 21

MySQL中的分组和排序操作可以用于各种复杂查询,掌握这些操作将有助于我们进行数据库的高效查询。


数据运维技术 » MySQL中的分组和排序操作(mysql中分组和排序)