MySQL- 6 数据排序

参考地址: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 不提供内置自然排序语法或函数,为了实现以上排序方式,需要将内容拆分为数字和字母存储为两列进行,再对其进行排序,实现方式请看参考网址 

发布了19 篇原创文章 · 获赞 1 · 访问量 2186

猜你喜欢

转载自blog.csdn.net/wella_liu/article/details/91856522