我想只从SQL查询的N行结果中检索一行。例如:
Set rs = conn.Execute("SELECT ..... ")
strResult = rs.Fields(0)
查询结果:
30
45
70
....
我如何使用此查询中的第二个值(20)?通过VBA或更改sql查询。 我使用的是SQL服务器。有" LIMIT"或" TOP"命令,但它们用于不同的目的。
答案 0 :(得分:0)
这可能会对你有所帮助 OFFSET n ROWS表示在n行之后 FETCH NEXT 1 ROWS ONLY意味着获得一行 但它需要ORDER BY语句
SELECT * from table
ORDER BY <columns>
OFFSET n ROWS
FETCH NEXT 1 ROWS ONLY
答案 1 :(得分:0)
您可以使用ROW_NUMBER()函数。您必须在某个有序列上选择ROW_NUMBER,然后您可以使用WHERE cla查询您的选择
USE AdventureWorks2012;
GO
SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS Row,
FirstName, LastName, ROUND(SalesYTD,2,1) AS "Sales YTD"
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;
使用公用表表达式查询您的行号
WITH OrderedEmployees(Row, FirstName, LastName)
As(
SELECT ROW_NUMBER() OVER(ORDER BY FirstName DESC) AS Row,
FirstName, LastName
FROM Employees
)
SELECT * FROM
OrderedEmployees
WHERE Row = 2
您可以查看此SQL FIDDLE并对其进行验证。