全部產品
Search
文件中心

AnalyticDB:ORDER BY

更新時間:Jul 18, 2025

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

常見問題

為什麼執行包含ORDER BY LIMIT的SQL語句時,查詢耗時較長?

原因:ORDER BY LIMIT子句中包含的列沒有建立叢集索引。即使為該列建立了普通索引,查詢時也無法應用該普通索引。

解決方案:

  1. 為ORDER BY LIMIT子句中包含的列建立叢集索引

    重要

    若您在建立叢集索引時,未指定排序方式,則預設為升序,此時如果您的查詢是降序,依然無法使用叢集索引。

  2. 執行BUILD任務。

    您可以手動觸發BUILD任務或等待系統自動觸發BUILD任務