“前一个”概念意味着需要逻辑排序,但是我们知道,表中的行是不骨顺序的,那我们就需要提供一个等同于“前一个”并能够以T-SQL表达式表述的概念。这种逻辑等效的一个例子是“小于当前值的最大值”。这句话,在T-SQL中可以使用一个像下面这样的相关子查询进行表达:
SELECT orderid,orderdate,empid,custid,
(SELECT MAX(O2.orderid) FROM order AS 02 WHERE 02.orderid<01.orderid) AS prevorderid
FROM order AS 01;
注意,由于在第一个之前不会有订单,子查询会为第一个订单返回NULL值。
同样,可以将“下一个”概念表述为“大于当前值的最小值” 。下面为每一个订单返回下一个订单ID的T-SQL查询。
SELECT orderid,ordate,empid,custid
(SELECT MIN(orderid) FROM order AS 02 WHERE 02.orderid>01.orderid) AS nextorderid
FROM orders AS 01;
注意,由于最后一个之后不会有订单,子查询为最后一个订单返回NULL。
本文出自 “成长基石” 博客,请务必保留此出处http://jeffxi.blog.51cto.com/8540759/1641101
原文地址:http://jeffxi.blog.51cto.com/8540759/1641101