跳转到主内容
极星编程网:以代码为星,赴技术山海!

怎么在MySQL中利用Order-By实现查询结果的升降排序

ORDER BY 是 MySQL 中控制查询结果排序的核心子句,默认升序(ASC),可显式指定 ASC 或 DESC;必须位于 SELECT 语句末尾,支持多列、表达式、别名排序,NULL 默认升序在前、降序在后。 在 MySQL 中,
ORDER BY
是控制查询结果排序的核心子句,它默认按升序(
ASC
)排列,也可显式指定升序或降序(
DESC
)。 基础语法与默认行为
ORDER BY
必须写在
SELECT
语句的末尾(位于
WHERE
、
GROUP BY
、
HAVING
之后)。不写排序方向时,MySQL 自动按升序处理: SELECT name, score FROM students ORDER BY score; 等价于: SELECT name, score FROM students ORDER BY score ASC; 明确指定升序或降序 使用
ASC
或
DESC
关键字可精准控制单列或多列的排序方向: MySQL(Linux) MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。 下载 按分数降序查前5名: SELECT * FROM students ORDER BY score DESC LIMIT 5; 先按部门升序,再按入职时间降序: SELECT * FROM employees ORDER BY dept ASC, hire_date DESC; 混合方向常见于报表场景,比如“同销量下新上架优先”: ORDER BY sales DESC, created_at DESC 对表达式或别名排序
ORDER BY
支持按计算字段或列别名排序,提升灵活性: 按姓名长度排序: SELECT name FROM users ORDER BY LENGTH(name); 用别名简化写法: SELECT price * qty AS total FROM orders ORDER BY total DESC; 注意:不能在
WHERE
中引用别名,但
ORDER BY
可以——这是它的特殊权限 空值(NULL)的排序规则 MySQL 中
NULL
默认排在最前(
ASC
)或最后(
DESC
),但行为取决于 SQL 模式。如需统一控制: 让 NULL 总是排最后(升序时): ORDER BY IF(ISNULL(col), 1, 0), col ASC 更简洁方式(MySQL 8.0+): ORDER BY col ASC NULLS LAST (需开启 ANSI 模式或确认版本支持) 实际开发中建议在业务层或查询前用
COALESCE(col, '默认值')
避免歧义

相关文章