MySQL-排序
介绍
在MySQL中,排序查询结果可以使用 ORDER BY 子句来实现。这个子句允许你根据一个或多个列进行排序,并且可以选择升序(ASC)或者降序(DESC)的方式。以下是基本的语法结构:
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
- column1, column2, …:指定用来排序的列名。可以指定一个或多个列。
- ASC:按该列的值以升序方式排序(从小到大)。MySQL默认升序。语句编写时可省略。
- DESC:按该列的值以降序方式排序(从大到小)。
建表
-- 创建用户表
CREATE TABLE sys_user (id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id',first_name VARCHAR (50) NOT NULL COMMENT '名字',last_name VARCHAR (50) NOT NULL COMMENT '姓氏',email VARCHAR (100) UNIQUE NOT NULL COMMENT '邮箱,需唯一',PASSWORD VARCHAR (255) NOT NULL COMMENT '密码',birth_date DATE COMMENT '出生日期',gender ENUM ('Male', 'Female', 'Other') COMMENT '性别,可选值为男、女、其他',registration_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间,默认为当前时间',
last_login TIMESTAMP COMMENT '最后登录时间') COMMENT '用户信息表'; -- 记录入库
INSERT INTO sys_user (first_name, last_name, email, PASSWORD, birth_date, gender, last_login)
VALUES('John', 'Doe', 'john.doe@example.com', 'hashed_password_1', '1990-01-15', 'Male', '2025-04-20 10:00:00'),('Jane', 'Smith', 'jane.smith@example.com', 'hashed_password_2', '1992-05-20', 'Female', '2025-04-22 14:30:00'),('Alex', 'Johnson', 'alex.johnson@example.com', 'hashed_password_3', '1988-11-03', 'Male', NULL);
示例
-- 按用户名字段进行升序排序,ASC可省略
SELECT * FROM sys_user ORDER BY first_name ASC; -- 按用户名字段进行降序排序
SELECT * FROM sys_user ORDER BY first_name DESC; -- 先按用户姓氏进行升序排序,再按用户名字进行升序排序
SELECT * FROM sys_user ORDER BY last_name ASC, first_name ASC; -- 先按用户姓氏进行升序排序,再按用户注册时间进行降序排序
SELECT * FROM sys_user ORDER BY last_name ASC, registration_date DESC;