sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc)
作者:mmseoamin日期:2023-12-11

sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc)

1.单字段排序;

【order by】排序:order by后面跟着的字段就是数据的排序字段;

(1)升序排序;

举例:对user表中的phone字段进行升序排序;

默认为升序排序;

【order by】select * from user order by phone

加上函数的升序排序;

【order by加上asc】select * from user order by phone asc

(2)降序排序;

举例:对user表中的phone字段进行降序排序;

【order by加上desc】select * from user order by phone desc

以上的查询结果在下面的图1中展示:

图1 

sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc),第1张

2.多字段排序;

【order by加上asc或者desc】在user表中首先对phone字段进行排序,若phone字段相等,则按照address字段进行排序;

select * from user order by phone desc,address desc

select * from user order by phone desc,address asc

以上的查询结果在下面的图2中展示:

图2

sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc),第2张

 

3.自定义排序;

【order by加上field()】:field(str,str1,str2......)中的str指的是字段名字,str1,str2......为str字段中的值,字段str按照字符串str1,str2......的顺序

返回查询到的结果集。如果表中str字段值不存在于str1,str2......中的记录,则放在结果集最前面进行返回。

举例:对user表中address进行正序排序,address字段中除了6和2以外的值放前面,其次就是6,再其次就是2,其实就是按照field中参数按照从前到后的顺序排序;

select * from user order by field(address,6,2) asc

举例:对user表中address进行倒序排序,address中的2排最前面,其次是6,再其次就是address字段中除了6和2以外的值,其实就是按照field中参数按照从后到前的顺序排序;

select * from user order by field(address,6,2) desc

以上的查询结果在下面的图3中展示:

图3

sql的各种排序(order by加asc或者desc、order by加field()加asc或者desc),第3张