ORDER BY子句
排序数据 DESC ASC
如果不排序,数据一般将以其在底层表中出现的顺序显示。可以为数据最初添加到表中的顺序,但是如果数据后来进行过更新或删除,则此顺序将会收到MySQL重用回收存储空间的影响
如果不明确排序,则检索出的数据顺序没有任何意义
子句
SQL语句由子句构成,有些子句是必须的,而有的是可选的
为了明确排序检索语句可使用ORDER BY子句。ORDER BY子句取一个或多个列的名字,对此输出进行排序。
SELECT
prod_name
FROM
products
ORDER BY
prod_name;
通过非选择列进行排序
通常ORDER BY子句中使用的列是SELECT展示的列,但实际上可以按非检索的列排序展示
按多个列排序
只需要指定列名,列名之间用逗号分开
按不止一个列进行数据排序,如要现实雇员清单(首先按姓排序,然后每个姓中按照名排序)。
注意仅在第一个排序字段相同的情况下,才按照第二个排序字段继续排序
SELECT
prod_id,
prod_price,
prod_name
FROM
products
ORDER BY
prod_name,
prod_price;
仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果所有的prod_price值唯一,则不会按照prod_name排序
指定排序方向 DESC
除了默认的升序排序,可以使用ORDER BY子句以降序排序,
SELECT
prod_id,
prod_price,
prod_name
FROM
products
ORDER BY
prod_price DESC;
按价格降序排序产品。
多个列排序
以价格降序排序产品,然后在对产品名排序
SELECT
prod_id,
prod_price,
prod_name
FROM
products
ORDER BY
prod_price DESC,
prod_name;
DESC关键字只应用到直接位于其前面的列名字段,其他字段仍然按照默认的升序排序
在多个列上降序排序
必须对每个排序的列指定DESC
SELECT
prod_id,
prod_price,
prod_name
FROM
products
ORDER BY
prod_price DESC,
prod_name DESC;
区分大小写和排序顺序
A a排序问题,
在字典排序顺序中A被视为与a相同,是MySQL的默认设置。可以在设置中进行更改。
简单的ORDER BY子句无法区分A a排序,DBA必须对数据库进行相应的设置
找出一个最高或最低的值
使用ORDER BY和LIMIT的组合
SELECT
prod_price
FROM
products
ORDER BY
prod_price DESC
LIMIT 1;
通过按照价格降序排序返回1行找出最昂贵的价格值
ORDER BY子句位置
ORDER BY 位于FROM之后
LIMIT 位于ORDER BY 之后
子句次序不对将产生错误消息
Comments | 0 条评论