若sql语句中order by指定了多个字段,则怎么排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了若sql语句中order by指定了多个字段,则怎么排序?相关的知识,希望对你有一定的参考价值。

参考技术A

order by id desc,time desc

先是按 id 降序排列  (优先)

如果 id 字段 有些是一样的话   再按time 降序排列 (前提是满足id降序排列)

order by name, age desc 

name优先

name一样的话,就按age排序。

后面再加第三列的话,也是一样  以此类推下去。

扩展资料:

mySql order by 几种排序的写法

1、单列升序:select<column_name> from <table_name> order by <column_name>; (默认升序,即使不写ASC)

2、单列降序:select <column_name> from <table_name> order by <column_name> desc; 

3、多列升序:select <column_one>, <column_two> from <table_name> order by <column_one>, <column_two>;

4、多列降序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> desc;

5、多列混合排序:select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;

SQL order by的用法

    首先,order by是用来写在where之后,给多个字段来排序的一个DQL查询语句。

    其次,order by写法:

    1.  select 字段列表/* from 表名 where 条件 order by 字段名1 asc/desc, 字段名2 asc/desc,.......

    2.  select 字段列表/* from 表名 where 条件 order by 字段序号 asc/desc, 字段序号 asc/desc,....... (此时字段序号要从1开始)

    3.  select 字段列表/* from 表名 where 条件 order by 字段别名1 asc/desc, 字段别名2 asc/desc,.......(这里类似于第一种,无非就是把字段名加了个别名来代替而已。)

    然后,order by的方式:

    1.asc 升序,可以省略,是数据库默认的排序方式

    2.desc 降序,跟升序相反。

    最后要注意order by的原则,写在最前面的字段,他的优先级最高,也就是写法中第一个的字段名1的优先级最高,优先执行他的内容。

 

下面举个栗子吧!

这里我有几个表

首先以sclass的降序查找student表中的记录

写法为:

select * from student t order by t.sclass desc;

输出为:

可以看到是以sclass的降序排列的。

再来:以Cno升序、Degree降序查询Score表的所有记录。

写法为:

select * from score s order by s.cno, s.degree desc;

输出为:

可以看到是优先以cno的升序来排列的,在cno相同的里面再以degree的降序来排列的。

 

 所以总结一下,order by的用法就是用来做排序,写在where之后,简单明了。

 

以上是关于若sql语句中order by指定了多个字段,则怎么排序?的主要内容,如果未能解决你的问题,请参考以下文章

若sql语句中order by指定了多个字段,则怎么排序?

若SQL语句中的ORDER BY短语中指定了多个字段,则( )。

SQL基础-order by

sql 排序,order by 按时间

python:mysql之ORDER BY 语句

sql语句中order by 多个字段同时排序的应用