> 文档中心 > 【mysql学习】4.排序检索数据

【mysql学习】4.排序检索数据

        我们在这篇文章中将学习如何对检索出来的数据进行排序。 目录如下


目录

准备工作

排序检索数据

按单列排序

按多列进行排序

按列位置排序 

指定排序方向 

总结


准备工作

        首先进入mysql

         选择自己的数据库进行练习

        输入show tables;查看这个库里面的所有表,我们这次要创建的是student表,如果有了student表输入drop table student;可以将student表删除;

         接下来我们创建这次要用的测试表,创建的sql语句如下

create table student (id int primary key auto_increment,name varchar(10) not null,score float);
insert into student values(null,'jack',93.5);insert into student values(null,'tom',90);insert into student values(null,'lucy',90);insert into student values(null,'smith',90);insert into student values(null,'abby',79.5);insert into student values(null,'kelly',86);

         插入数据后查看数据是否添加成功,输入 select * from student; 如果显示如下,那么我们的准备工作就完成了。


排序检索数据

        在前面我们使用select进行查询的数据都是表里面存放的顺序,现在,我们来对查询出来的数据按照我们想要的顺序进行排序。

按单列排序

        我们使用order by 来对数据进行排序,order by放在select语句中的最后,order by排序默认是升序。下面我们来根据学生成绩进行排序。

select * from student order by score;


按多列进行排序

        在上面我们通过学生的分数进行了排序,但是排序后发现有3个学生的成绩都是90分,现在我们就规定,如果成绩相同,那么就按照名字进行排序。名字是字符串,字符串排序的比较方法就是按照字母进行比较的。

        我们使用多列排序,在order by后面写列名,多个列名用 , 进行隔开。

select * from student order by score, name;

        注意,order by后面写的列名顺序就是排序的顺序,例如上面我们是先写的score,再写的name,那么order by 就是先按照score进行排序,然后按照name进行排序。 


按列位置排序 

        按列位置进行排序和上面的排序是一样的,就是用数字来代替列名,例如,我们的名字 是第2列,那么我们就可以用 order by 2 来代替 order by name  

        下面我们使用列位置的方式来对分数和名字进行排序。

-- select * from student order by score, name;-- 上下两条sql语句等效  select * from student order by 3, 2;

         注意:使用列名进行排序可能会造成错用列名排序,在我们更改列之后,使用这种写法也容易造成对错误的数据进行排序。我们应当尽量避免使用这种用法。


指定排序方向 

        在上面我们使用order by进行排序,默认的都是升序排列,能不能使用降序进行排列呢?显然是可以的,我们使用关键字desc就行了,desc放在排序的列名后面即可。

        下面我们来对学生成绩进行降序排列。

select * from student order by score desc;

        上面我们在score后面使用了desc关键字,然后就是按照score进行降序排列,如果有多个列,想要都进行降序排列,我们就要在列名后面都加上desc关键字。列名后面不加desc关键字就是升序排列。

        下面我们来对学生成绩和名字都进行降序排列。 

select * from student order by score desc, name desc;


总结

        在这篇文章中我们使用order by来对检索的数据进行排序,默认是升序排序,如果想要进行降序排列,那么我们就要在每一列想要降序排序的列后面都加上desc关键字。