ORDER BY
更新时间:
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任务。
该文章对您有帮助吗?