SQL ORDER BY 多列排序

本文介绍了在SQL中使用ORDER BY进行多列排序的方法。当不指定排序方式时,默认为升序。通过示例展示了如何根据多列进行排序,并用代码解释了如何利用ORDER BY进行分组和排序的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL ORDER BY 多列排序

SQL ORDER BY 多列排序的使用

最近学习My Sql的时候对order by的多列排序逻辑不是很清楚,查阅了一些资料加上自己动手做了几个小实验清楚了不少,本结论仅适用于实验条件下成立(列值为 int)先上结论:
如:order by 列名1,列名2,列名3…;
若列名后不加限制条件,将直接按照离order by语句最近的无限制条件的列名排序,即列名1,排序方式默认升序。
如:SELECT * FROM 表名 ORDER BY 列名1>5,列名2;,将按照列名2的值进行排序,而列名1>5的作用是分组,输出结果将按照:列名1值<=5为第一组,列名1>5为第二组的方式,分成两组,两组分别按照列名2的值进行排序,下面以代码为例具体说明:

//建立一个无序表这样更能看出实验结果
create table test (
a int,
b int,
c int
);
insert into test (a,b,c)values
(9,4,78),
(2,7,80),
(3,9,81),
(7,2,60),
(5,4,82),
(4,3,72),
(8,5,41),
(1,8,59),
(6,1,46);
//一、未加条件
	//1
	select * from test order by a;
	//2
	select * from test order by a,b;
	//3
	select * from test order by a,b,c;
	//以上三种情况运行结果均相同,以a的值为依据升序排列
//二、增加条件
	//1
	select * from test order by a>5;
		//将初始表直接分为两组a<=5在前,a>5在后,各组内先后顺序同初始表
	//2
	select * from test order by a>5,b;
		//将初始表直接分为两组a<=5在前,a>5在后,与1情况不同的是各组内以b的值为依据升序排列
	select * from test order by a>5,b>5,c;
		//将初始表直接分为两组a<=5在前,a>5在后,在第一个分组a<=5中,再次按b<=5,b>5分组,组内顺序以c的值为依据升序排列,a>5同上
	select * from test order by a>5,b>5,c>60;
		//将初始表直接分为两组a<=5在前,a>5在后,在第一个分组a<=5中,再次按b<=5,b>5分组,在b的每一个分组内再次分组,分组内顺序按照表的初始定义顺序排序

以上就是本次实验的全部过程,有兴趣的同学可以直接试一下运行结果,如有不足欢迎批评指正.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值