MySQL中的排序(ORDER BY)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL中的排序(ORDER BY),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1883字,纯文字阅读大概需要3分钟。
内容图文
![MySQL中的排序(ORDER BY)](/upload/InfoBanner/zyjiaocheng/915/09fea14dfb0442d38678d1875b34ca48.jpg)
当使用 SELECT FROM 时,如果不排 序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或删除,则此顺 序将会受到MySQL重用回收存储空间的影响。因此,如果不明确控 制的话,不能(也不应该)依赖该排序顺序。关系数据库设计理论认 为,如果不明确规定排序顺序,则不应该假定检索出的数据的顺序有 意义。 《MySQL必知必会》
可以使用 ORDER BY 子句取一列或者多列的名字,据此对输出进行排序,比如创建了如下的student表:
创建表:
CREATE TABLE stu (Cno SMALLINT, Sno CHAR(11) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT);
插入数据:
insert into stu values(5,'20162180111','萧峰','男',22); insert into stu values(4,'20162180108','张无忌','男',21); insert into stu values(3,'20162180222','王语嫣','女',21); insert into stu values(5,'20162180088','郭襄','女',19); insert into stu values(5,'20162180067','袁紫衣','女',21); insert into stu values(3,'20162180023','赵敏','女',20);
想依据Sno(学号)对输出进行排序, SELECT * FROM stu ORDER BY Sno; 得到以下排序后的输出。
但是,经常需要按不止一个列进行数据排序。比如想对上述表中的数据先进行班排序,然后在班内进行学号的排序,操作语句如下:
SELECT * FROM stu ORDER BY Cno,Sno;
但是应该注意到,这种多列一起排序的情况,以2列为例,如果第一列中的所有值都不相同,那么第二列中的排序就没有意义了,如,所有的人都来自不同班,那么按班号排序后就无须再按学号排序了。
ORDER BY 默认的排序是升序的,也可以改为降序,操作语句如下:
SELECT * FROM stu ORDER BY Sno DESC;
当然,同理,想先按班级号升序排序,然后再在班内按学号降序排序的操作如下:
SELECT * FROM stu ORDER BY Cno,Sno DESC;
由此可以看到,DESC关键字只应用到直接位于其前面的列名。
使用ORDER BY 和 LIMIT 可以找出一个列中最高或者最低的值
比如,想找出学生中学号最高的那位同学,操作语句如下:
SELECT * FROM stu ORDER BY Sno DESC LIMIT 1;
注意:ORDER BY子句的位置 在给出ORDER BY子句时,应该保证它 位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY 之后。使用子句的次序不对将产生错误消息
内容总结
以上是互联网集市为您收集整理的MySQL中的排序(ORDER BY)全部内容,希望文章能够帮你解决MySQL中的排序(ORDER BY)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。