“前一个”概念意味着需要逻辑排序,但是我们知道,表中的行是不骨顺序的,那我们就需要提供一个等同于“前一个”并能够以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。