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
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
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