数据库查询结果的动态排序(1)

雅兰生

雅兰生

2016-01-29 16:15

数据库查询结果的动态排序(1),数据库查询结果的动态排序(1)
    在公共新闻组中,一个经常出现的问题是“怎样才能根据传递给存储过程的参数返回一个排序的输出?”。在一些高水平专家的帮助之下,我整理出了这个问题的几种解决方案。


一、用IF...ELSE执行预先编写好的查询


  对于大多数人来说,首先想到的做法也许是:通过IF...ELSE语句,执行几个预先编写好的查询中的一个。例如,假设要从Northwind数据库查询得到一个货主(Shipper)的排序列表,发出调用的代码以存储过程参数的形式指定一个列,存储过程根据这个列排序输出结果。Listing 1显示了这种存储过程的一个可能的实现(GetSortedShippers存储过程)。



【Listing 1: 用IF...ELSE执行多个预先编写好的查询中的一个】


CREATE PROC GetSortedShippers

@OrdSeq AS int

AS


IF @OrdSeq = 1

SELECT * FROM Shippers ORDER BY ShipperID

ELSE IF @OrdSeq = 2

SELECT * FROM Shippers ORDER BY CompanyName

ELSE IF @OrdSeq = 3

SELECT * FROM Shippers ORDER BY Phone





  这种方法的优点是代码很简单、很容易理解,SQL Server的查询优化器能够为每一个SELECT查询创建一个查询优化计划,确保代码具有最优的性能。这种方法最主要的缺点是,如果查询的要求发生了改变,你必须修改多个独立的SELECT查询——在这里是三个。
 
展开更多 50%)
分享

猜你喜欢

数据库查询结果的动态排序(1)

SQLServer
数据库查询结果的动态排序(1)

数据库查询结果的动态排序(6)

SQLServer
数据库查询结果的动态排序(6)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

数据库查询结果的动态排序(2)

SQLServer
数据库查询结果的动态排序(2)

数据库查询结果的动态排序(4)

SQLServer
数据库查询结果的动态排序(4)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

数据库查询结果的动态排序(5)

SQLServer
数据库查询结果的动态排序(5)

数据库查询结果的动态排序(7)

SQLServer
数据库查询结果的动态排序(7)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

巧妙出招致胜服务器管理

巧妙出招致胜服务器管理

SQL Server如何解决加密问题?

SQL Server如何解决加密问题?
下拉加载更多内容 ↓