SQL数据排序 - ORDER BY子句
SQL数据库查询中使用order by子句对查询的数据结果进行排序,如按照某字段进行升序排列输出或降序排列输出。
01
SELECT column_name1 ,coulumn_name2 ,function(column_name3) FROM table_name [WHERE Clause] GROUP BY column_name1,column_name2 ORDER BY column_name1 ASC
这里是对上一节GROUP BY子句语法结构的扩展,实际工作中可以直接使用ORDER BY语句。如:
SELECT column_name1 ,coulumn_name2 FROM table_name [WHERE Clause] ORDER BY column_name1 ASC
可以使用SELECT语句中任何字段来排序,可设定1个排序字段,也可以是多个;
字段后加ASC表示对字段升序排列,加DESC表示对字段降序排列;不指定的话默认是ASC升序。
[WHERE Clause] 表示可选,语句中可以有WHERE条件,也可以没有WHERE条件。
02
见:
SQL创建数据库和数据表
数据分析师的日常,公众号:数据分析师的日常SQL创建数据库和数据表
2.1 对一个字段进行排序
首先,我们来统计每个价格的商品数量,并按照价格升序排列,SQL如下:
-- SELECT price ,count(*) FROM data_learning.product GROUP BY price ORDER BY price;
查询结果如下(部分),价格低的会排在前面:
如果要降序排列,那么使用ORDER BY price DESC。
2.2 对多个字段进行排序
比如查询data_learning.product表中的的所有数据,优先按照product_name升序排列,再按price降序排列:
-- data_learning.productproduct_namepriceSELECT product_id ,product_name ,price FROM data_learning.product ORDER BY product_name ASC,price DESC;
查询结果如下(部分),从product_name=’T恤’的数据可以看出,当product_name相同时,按price降序排列:
ORDER BY子句后面可以直接跟列名,也可以跟列在查询中的位置数字,比如1,2,3…。如查询data_learning.product表中的的所有数据,优先按price降序排列,再按照product_name升序排列:
-- data_learning.productpriceproduct_nameSELECT product_id ,product_name ,price FROM data_learning.product ORDER BY 3 DESC,2 ASC;
查询结果如下(部分):
在日常工作中,我比较习惯用列位置数字,能少敲一些列名字母。
需要注意的是,不同数据库的排序机制不一样,如果查询的结果和我们期望的排序结果有差异,可以通过设置MySQL中的排序规则,或者在查询语句中指定排序规则来解决。
发表评论