* 标签: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语句所选的范围内时,采用列的序号显然是行不通的。当然,可以将列别与序号混合起来解决这个问题。 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏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.