快手官方网站音乐人怎么做,wordpress user level,企业形象网站用什么语言开发,百度一下网页搜索问#xff1a;我的一个表中包含了名为IdValue的单列主键。对于给定的IdValue值#xff0c;我希望找到紧邻目标值之前和之后的表行(假定结果按IdValue排序)。怎样才能不使用游标而通过一个基于集合的方法得到需要的结果#xff1f;答#xff1a;Transact-SQL是一个基于集合的…问我的一个表中包含了名为IdValue的单列主键。对于给定的IdValue值我希望找到紧邻目标值之前和之后的表行(假定结果按IdValue排序)。怎样才能不使用游标而通过一个基于集合的方法得到需要的结果答Transact-SQL是一个基于集合的语言使用它在结果集中定位特定的行并非一件易事。但是服务器端ANSI Transact-SQL游标的性能远远不如基于集合的解决方案因此学习解决问题的多种技术非常重要尤其在面临上述问题时。以Northwind数据库中的Orders表为例。我们可以这样重述该问题怎样才能在Orders表中找到紧邻特定行之前和之后的行而不使用游标假设我们按照OrderId列对结果集排序。创造性地使用SQL Server的MIN()、MAX()和 TOP功能可以帮助您解决诸如此类的结果集定位问题。程序清单1和2给出了两个相似的、仅有细微差别的解决方法。程序清单1提供了一个常见的解决方案因为它运用了TargetOrder的MIN()和MAX()终点。但在某些情况下展示TOP的灵活性也很有用。请注意在以参数方式提供Orders表的最小OrderId(10248)时程序清单2中的查询将返回空集因为该查询假定在TargetOrder行前总有一个行存在。一般说来生成结果集的方法不止一种其中某一方法通常比其他的更高效。当您对这两个例子评估SHOWPLAN和SET STATISTICS IO信息时您会发现运用了TOP语句的程序清单2的效率略微高于程序清单1。差别很细微的原因在于样本数据集很小但在存在多种查询方法的情况下测试不同方法的性能非常重要。—Brian Moran程序清单1使用包含OR关键字的MIN() and MAX()函数查找目标行DECLARE TargetOrder intSET TargetOrder10330FROM OrdersWHERE OrderIdTargetOrderOR OrderId(SELECT MAX(OrderId)FROM orders WHERE OrderId TargetOrder)OR OrderId (SELECT MIN(OrderId)FROM orders WHERE OrderId TargetOrder)程序清单2使用TOP关键字查找目标行SELECTTOP 3*FROM ordersWHERE OrderId (SELECT MAX(OrderId) FROM ordersWHERE OrderId TargetOrder)ORDER BYOrderId本文原创发布php中文网转载请注明出处感谢您的尊重