SQL Server 2005 的 APPLY 操作符






3.40/5 (6投票s)
APPLY 运算符是 SQL Server 2005 中的一项新功能,用于查询的 FROM 子句中。它允许您为外部表的每一行调用一个返回 TABLE 的函数。我们可以将外部表的列作为函数参数传递。
引言
APPLY 运算符是 SQL Server 2005 中的一项新功能,而 TOP 在 SQL 2005 中也有一些新的增强。我们将在本文中讨论这两个运算符。
APPLY 运算符
APPLY 运算符是 SQL Server 2005 中的一项新功能,用于查询的 FROM
子句中。它允许您为外部 TABLE
的每一行调用一个返回 TABLE
的函数。我们可以将外部表的列作为函数参数传递。
它有两个选项:
- CROSS APPLY,和
- OUTER APPLY
如果函数表没有与外部表行对应的行,CROSS APPLY 将不会返回外部表的行,而 OUTER APPLY 将返回 NULL
值代替函数列。
以下查询返回与 cust.CustomerID
匹配的 customer 表的所有记录。要执行以下代码,您需要拥有包含一些数据的以下两个数据库表。
CREATE TABLE Customer(CustomerID INT, CustName VARCHAR(max))
CREATE TABLE Orders(OrderID int IDENTITY(1,1) NOT NULL,CustomerID int,_
SalesPersonID int,OrderDate datetime,Amount int)
Using the Code
--Function returning an OUTER query result in a table
CREATE FUNCTION fnGetCustomerInfo (@custid int)
RETURNS TABLE
AS
RETURN
(
--Outer Query
SELECT *
FROM Orders
WHERE customerid=@custid
)
--Use APPLY
SELECT * FROM Customer cust
CROSS APPLY
fnGetCustomerInfo(cust.CustomerID)
ORDER BY cust.CustName
TOP 运算符
在 SQL 2005 中,TOP 用于将返回的行数限制为数字或百分比,在 SELECT
、UPDATE
、DELETE
或 INSERT
语句中。 以前,这只能通过 SELECT
查询实现。此增强功能取代了 SET ROW COUNT
,后者存在性能问题。
语法:TOP <literal> 或 <expression> [PERCENT]
注意:literal 选项的表达式应为 bigint
类型,expression 选项的表达式应为 float
类型。
SELECT TOP 10 * FROM Orders
SELECT TOP (SELECT count(*) FROM Customer) * FROM Orders
DECLARE @NOROWS AS FLOAT
SET @NOROWS = 70
SELECT TOP (@NOROWS) PERCENT * FROM Orders
关注点
有关 SQL Server 的更多文章,请访问 www.geocities.com/ProgrammersVision。
历史
- 2007 年 5 月 4 日:初始发布