ORDER BY用于根据指定字段对查询结果排序。搭配LIMIT,可以限制排序后的查询结果的返回行数。本文介绍ORDER BY语法与使用示例。

语法

ORDER BY expression
[ ASC | DESC ]
[ LIMIT count]

参数

是否必填

说明

expression

必填

指定需要进行排序的字段,取值说明如下:

  • 字段的名称。例如device,表示根据device列进行排序。

  • 字段的序号,即结果列按从左到右排列时的位置顺序,从1开始。例如4,表示根据返回结果的第4列进行排序。

[ ASC | DESC ]

选填

指定查询结果根据目标字段进行升序或降序排列,取值说明如下:

  • ASC:升序,默认值。

  • DESC:降序。

说明

若在expression参数中指定了多个字段,可以为每个字段单独指定升序或降序。例如ORDER BY 2 ASC, 4 DESC,表示返回结果按照第2列升序,第四列降序进行排序。

[ LIMIT count]

指定查询结果的返回行数。

未指定该参数时,默认返回所有结果行。

示例

  • 统计在不同城市售出的设备数量,并按照设备名称和销售量排列,语句如下:

    SELECT os,device,city,COUNT(*) AS num FROM requests GROUP BY os,device,city ORDER BY num,device;

    返回结果如下:

    os      |device |city         |num
    --------+-------+-------------+---
    Linux   |PC     |Shanghai     |1
    windows |PC     |Shenzhen     |1
    windows |PC     |Shanghai     |1
    windows |PC     |Hangzhou     |1
    windows |Phone	|Shenzhen     |1
    Linux   |Phone  |Hangzhou     |1
    ios     |Phone  |Zhangjiakou  |1
    windows |PC     |Shijiazhuang |2
    Linux   |PC     |Beijing      |2
    ios     |Phone  |Shijiazhuang |2
    windows |Phone  |Shijiazhuang |2
    Linux   |Phone  |Beijing      |2
    windows |PC     |Beijing      |4
  • 统计设备销售数量排名前5的城市,并按照设备名称降序,按照销售量升序排列,语句如下:

    SELECT os,device,city,COUNT(*) AS num FROM requests GROUP BY os,device,city ORDER BY 2 DESC,4 ASC LIMIT 5;

    返回结果如下:

    os     |device |city        |num
    -------+-------+------------+----
    ios    |Phone  |Zhangjiakou |1
    windows|Phone  |Shenzhen    |1
    Linux  |Phone  |Hangzhou    |1
    windows|Phone  |Shijiazhuang|2
    Linux  |Phone  |Beijing	    |2