ORDER BY用於根據指定欄位對查詢結果排序。搭配LIMIT,可以限制排序後的查詢結果的返回行數。本文介紹ORDER BY文法與使用樣本。
文法
ORDER BY expression
[ ASC | DESC ]
[ 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子句中包含的列沒有建立叢集索引。即使為該列建立了普通索引,查詢時也無法應用該普通索引。
解決方案:
為ORDER BY LIMIT子句中包含的列建立叢集索引。
重要若您在建立叢集索引時,未指定排序方式,則預設為升序,此時如果您的查詢是降序,依然無法使用叢集索引。
執行BUILD任務。
您可以手動觸發BUILD任務或等待系統自動觸發BUILD任務。