找回密码
 注册
搜索
热搜: 回贴

Mysql 对多列进行排序

2010-1-30 22:19| 发布者: admin| 查看: 23| 评论: 0|原作者: 九天玄女

* 标签:SQL语言 数据库 ORDER BY SQL Server SQL语言与数据库操作技术大全
*


1. 对多列进行排序

使用ORDER BY子句也可以根据两列或多列的结果进行排序,只要用逗号分隔开不同的排序关键字就可以了。如下面的语句:

ORDER BY col1 DESC,col2,……,colm

其实际排序结果是根据ORDER BY子句后面列名的顺序确定优先级的。即查询结果首先以列col1的降序顺序进行排序,而只有当列col1出现相同的信息时,这些相同的信息再按col2列的升序进行排序,依此类推。

实例33 对多列进行排序操作

本实例实现在BookInfo表中,查询所有的图书信息,结果按照publish列的降序和pubdate列的升序顺序排序。实现代码如下:

USE Library
SELECT *
FROM BookInfo
ORDER BY publish DESC,pubdate

运行该代码,得到的查询结果如图4.35所示。

图4.35 多列排序的查询结果

可见,系统根据排序的优先级,首先依据publish字段的记录进行降序排序(汉语拼音的首字母),当publish字段的记录相同时,再依据pubdate字段的记录进行升序排序。

另外,ORDER BY 子句除了可以根据列名进行排序外,还支持根据列的相对位置(即序号)进行排序。

如下面的语句:

SELECT col1,col2,……,coln
FROM table_name
ORDER BY 2,1

此时,ORDER BY子句后面的序号实际上就是SELECT关键词后面的列名的序号。此时ORDER BY子句就等同于ORDER BY col2,col1。
实例34 使用序号对多列进行排序操作

本实例实现在BookInfo表中,查询所有的bookid、bookname、publish、pubdate和price信息,并通过使用序号的方式对结果按照publish列的降序和pubdate列的升序顺序排序。实现代码如下:

USE Library
SELECT bookid,bookname,publish,pubdate,price
FROM BookInfo
ORDER BY 3 DESC,4


运行该代码,得到的查询结果如图4.36所示。

当ORDER BY所需要的列不在SELECT语句所选的范围内时,采用列的序号显然是行不通的。当然,可以将列别与序号混合起来解决这个问题。


最新评论

相关分类

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 05:30 , Processed in 0.167731 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部