参考地址:http://www.manongjc.com/mysql_basic/mysql-order-by-basic.html
排序函数
当使用SELECT语句从表中查询数据时,结果集不会按任何顺序排序。要对结果集排序,请使用ORDER BY
子句。ORDER BY
子句允许您:
- 按单列或多列对结果集排序。
- 按升序或降序对不同列进行结果集排序。
DESC 降序
ASC 升序(默认)
Order by columns,也可对多个栏位进行排序,同时允许对表达式结果进行排序
SELECT
contactLastname,
contactFirstname
FROM
customers
ORDER BY
contactLastname DESC,
contactFirstname ASC;
自定义排序函数:
FIELD函数(不在排序内会出现在最前边)
SELECT
orderNumber, status
FROM
orders
ORDER BY FIELD(status,
'In Process',
'On Hold',
'Cancelled',
'Resolved',
'Disputed',
'Shipped');
Order语法优化
可以使用索引:
SELECT * FROM t1 ORDER BY key_part1,key_part2,... ;
SELECT * FROM t1 WHERE key_part1=1 ORDER BY key_part1 DESC, key_part2 DESC;
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 DESC;
但是以下情况不使用索引。
1) order by的字段混合ASC和DESC
SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
2) 用于查询行的关键字与ORDER BY中所使用的不相同
扫描二维码关注公众号,回复:
9524998 查看本文章
SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
3)对不同的关键字使用ORDER BY
SELECT * FROM t1 ORDER BY key1, key2;
自然排序
Mysql排序:
自然排序:
Mysql 不提供内置自然排序语法或函数,为了实现以上排序方式,需要将内容拆分为数字和字母存储为两列进行,再对其进行排序,实现方式请看参考网址