我们在这篇文章中将学习如何对检索出来的数据进行排序。 目录如下
目录
准备工作
首先进入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关键字。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74868.html