您现在的位置是:主页 > news > 莆田市秀屿区建设局网站/百度推广优化公司
莆田市秀屿区建设局网站/百度推广优化公司
admin2025/6/13 19:09:24【news】
简介莆田市秀屿区建设局网站,百度推广优化公司,长沙网红奶茶,wordpress需要ftp登录前情回顾 试设想这样一个场景,班级组织了一场考试,考试结束后,要根据分数,进行排名,此时,如果只有分组聚合的能力的话,肯定是显得有些不足的,我们也需要有排序的能力。 为了&#…
前情回顾
试设想这样一个场景,班级组织了一场考试,考试结束后,要根据分数,进行排名,此时,如果只有分组聚合的能力的话,肯定是显得有些不足的,我们也需要有排序的能力。
为了,能够记录所有人的分数,我们创建这样一个数据表
create table Score(id int not null auto_increment,name varchar(50) not null,math int,python int,mysql int,primary key(id)
);
当然,我们还要插入一些数据
insert into Score values(0, '瞎老弟', 33, 100, 100),(0, '瞎老妹', 89, 77, 63),(0, '北小鸟', 78, 78, 88),(0, '科斯基', 89, 99, 96),(0, '嘉陵姬', 99, 12, 13),(0, '神老弟', 99, 99, 99);
使用order by进行排序
select <列1>, <列2>...
from <表名>
order by <列1>, <列2>...
比如说,如果我们希望对数学成绩进行排序,那么需要这样做
select name, math, python, mysqlfrom Scoreorder by math;
排序,所使用的默认顺序是升序,也就是从小到大的顺序,进行排序。
如果我们不想使用升序进行排序,而是希望使用降序进行排序,也就是从大到小排序,那么需要加入关键字,desc
select <列1>, <列2>...
from <表名>
order by <列> desc;
比如说,如果我们要对数学成绩进行降序排序,那么需要这样做。
select name, math, python, mysqlfrom Scoreorder by math desc;
需要说明的是,默认的升序排序,也是可以通过asc进行指定的,不过由于升序使用的asc是默认的排序方式,因此一般无需指定asc,只需要在降序排序的时候,指定desc就可以了。
ascendent 上升的(读作:鹅三等特)
descendent 下降的(读作:迪三等特)
排序的时候,我们也可以指定多个列同时进行排序,比如,我们发现当使用升序排序数学成绩的时候,有的人的成绩重复了,因此我们希望,如果在升序排序数学成绩的时候,成绩发生了重复,那么我们就降序排列python成绩,我们可以这样做
select name, math, python, mysqlfrom Scoreorder by math, python desc;
order by排序的时候,也可以使用select并没有选择的字段,比如说,我们通过数学成绩对每个人进行排序,但是我们不要查询出他们所对应的数学成绩
select namefrom Scoreorder by math;
当然,这里可能又有人有疑问说,我不想按照单科成绩进行排名,我希望能够对总分进行排名,这应该怎么办呢。很简单,只需要使用我们之前章节中学习过的运算符就可以了,比如说,像这样使用
select name, math, python, mysqlfrom Scoreorder by math + python + mysql;
通过字段顺序进行排序
比如说,之前,我们在通过数学成绩进行排序的时候,是这样使用的。
select name, math, python, mysqlfrom Scoreorder by math;
从这里,我们可以看出,name排在第1个,math排在第2个,python排在第3个,mysql排在第4个。因此,我们想到了一种简化的排序方式,也就是说,通过指定数字,来进行排序。
select name, math, python, mysqlfrom Scoreorder by 2;
由于math就是第2个,因此,在这里,order by 2等同于order by math。
不过需要注意的是,最好请不要使用这种方式,主要有以下两个原因
1,通过数字省略了名字的这种排序方式,虽然在写sql语句的时候,简化了一点操作,但是在阅读sql语句的时候,却增加了一些麻烦。这种语句既不便阅读,也更容易出现错误。
2,使用数字进行排序的这种方式,会给sql注入带来便利,不利于数据库的安全性。比如说,order by配合数字的方式,可能在sql注入的时候,用于猜解字段个数,因此这种写法,在未来可能会被移除。因此,如果你在你的代码中使用了这种方式,那么未来使用新版本的数据库的时候,也许会出现代码报错的情况。(关于sql注入,并不是本系列的重点,因此只会在本系列后期的补充篇中进行简单的介绍。)
点击查看瞎老弟mysql系列全部文章