SQL Server:如何使用select top(@number)语法?

时间:2019-01-31 02:30:33

标签: sql sql-server

假设我有一个SQL Server employee表,如下所示:

No   empno
-----------
1    NULL
2    7889
3    7778
4    6454
5    7777

我要选择第3行

SET @count = 3 

SELECT TOP (@count) empno 
FROM employee 
EXCEPT 
SELECT TOP (@count-1) empno 
FROM employee

我在@count遇到错误:

  

必须声明标量变量@count

我该如何解决这个问题?

顺便说一句,我使用Microsoft SQL Server Management Studio,但它们没有SELECT ROW吗?

2 个答案:

答案 0 :(得分:1)

您必须先声明变量

DECLARE @count int
SET @count = 3 
SELECT TOP (@count) empno FROM employee EXCEPT 
SELECT TOP (@count-1) empno FROM employee

或者您可以使用Row_number()选择单个行

看这里,它将帮助您做到这一点

http://www.advancesharp.com/questions/18687/select-nth-row-from-a-table-in-sql-server

答案 1 :(得分:0)

它不像EXCEPT那样漂亮,但是它只读取一次表:

DECLARE @count INT = 3

SELECT  TOP 1 * FROM (
    SELECT  TOP (@count) * FROM employee ORDER BY empno
) as t ORDER BY empno Desc