Skip to content

MySQL排序

概述

ORDER BY子句按一个或多个列对结果集进行排序。它可以按升序(ASC)或降序(DESC)排序。默认情况下,结果按升序排序。

ORDER BY语法

sql

基本排序

升序排序

sql
-- Default is ASC

-- Sort by name alphabetically

降序排序

sql
-- Use DESC for descending

-- Newest first

多列排序

sql
-- Sort by multiple columns

-- Different directions

-- Three columns

按位置排序

sql
-- Sort by column position in SELECT

-- Multiple positions

使用表达式排序

字符串表达式

sql
-- Sort by string length

-- Sort by part of string

-- Case-insensitive sort

数值表达式

sql
-- Sort by calculation

-- Sort by absolute value

Time Expressions / 日期时间表达式

sql
-- Sort by date part

-- Sort by time only

-- Sort by relative date

NULL值排序

NULL位置

sql
-- NULLs first (default ASC)

-- NULLs last

-- In MySQL (NULLs are lowest by default)

使用COALESCE处理NULL

sql
-- Treat NULL as specific value

-- Multiple NULL columns

带LIMIT的ORDER BY

Top N结果

sql
-- Get top 10 most expensive products

-- Get newest 5 users

-- Get oldest 10 orders

分页

sql
-- Page 1 (records 1-10)

-- Page 2 (records 11-20)

-- Page 3 (records 21-30)

随机排序

sql
-- Random selection

-- Random product

-- Shuffle results

不同上下文中的ORDER BY

带JOIN

sql
-- Sort joined results

-- Sort by aggregate

带GROUP BY

sql
-- Sort grouped results

-- Sort by aggregate

带子查询

sql
-- Sort subquery results

-- UNION with ORDER BY

排序规则和排序

字符集

sql
-- Different collation

不区分大小写的排序

sql
-- Default is case-insensitive for utf8mb4

-- Case-sensitive sort

性能考虑

索引使用

sql
-- Index helps for sorted columns

-- Composite index for multiple columns

索引无效的情况

sql
-- Expression on column

-- Function on column

-- Mixed directions

实用示例

电商排序

sql
-- Sort by price: low to high

-- Sort by price: high to low

-- Sort by rating

-- Sort by newest

用户管理

sql
-- Recently active users

-- Users by registration date

-- Alphabetical by last name

报表排序

sql
-- Sales by amount

-- Top customers

小结

ORDER BY子句提供:

排序:ASC(默认)、DESC 多列:按多列排序 表达式:按计算值排序 last / NULL处理:NULL在前/后 LIMIT:Top N结果 性能:使用索引进行排序


上一个:UNION

下一个:GROUP BY