MySQL ORDER BY 排序
ORDER BY 子句用于对查询结果进行排序,默认升序排列。
基本语法
SQL
SELECT 列名 FROM 表名 ORDER BY 列名 [ASC|DESC];
-- ASC: 升序(默认)
-- DESC: 降序
单列排序
SQL
-- 创建示例表
CREATE TABLE scores (
id INT PRIMARY KEY,
name VARCHAR(50),
score INT,
class VARCHAR(10)
);
INSERT INTO scores VALUES
(1, '张三', 85, 'A'),
(2, '李四', 92, 'A'),
(3, '王五', 78, 'B'),
(4, '赵六', 88, 'B');
-- 升序排序(默认)
SELECT * FROM scores ORDER BY score;
SELECT * FROM scores ORDER BY score ASC;
-- 降序排序
SELECT * FROM scores ORDER BY score DESC;
多列排序
SQL
-- 先按班级升序,再按分数降序
SELECT * FROM scores ORDER BY class ASC, score DESC;
-- 先按分数降序,再按姓名升序
SELECT name, score FROM scores ORDER BY score DESC, name ASC;
按表达式排序
SQL
-- 按计算结果排序
SELECT name, score, score * 1.1 AS 调整分
FROM scores
ORDER BY score * 1.1 DESC;
-- 使用别名排序
SELECT name, score AS 成绩
FROM scores
ORDER BY 成绩 DESC;
按位置排序
SQL
-- 按SELECT列表中的位置排序
SELECT name, score FROM scores ORDER BY 2 DESC;
-- 2 表示第二列(score)
NULL 值排序
SQL
-- MySQL 默认 NULL 值在升序时最前,降序时最后
-- 可以使用 IS NULL 控制位置
SELECT * FROM scores
ORDER BY score IS NULL, score DESC;
ORDER BY 在 WHERE 之后,LIMIT 之前执行。
要点总结
- ORDER BY 对查询结果排序
- ASC 升序(默认),DESC 降序
- 支持多列排序,按书写顺序依次排序
- 可按列名、表达式、别名或位置排序
📝 发现内容有误?点击此处直接编辑