SQL中的TOP子句,何处为Caluse

时间:2018-07-06 06:44:57

标签: sql-server

我想在条件中使用top子句。

我想这样做:-

SELECT column_name_1,column_name_2,column_name_n 
FROM   table_name 
Where  condition and top n.

1 个答案:

答案 0 :(得分:0)

可以使用排名功能(ROW_NUMBER() / RANK() / DENSE_RANK(),具体取决于您的要求)和子查询。但是我不知道为什么你会想要这样做。它比较冗长,没有任何好处,请考虑以下查询,这些查询是等效的(就结果而言,不一定是执行计划):

DECLARE @N INT = 5;

SELECT TOP (@N) name
FROM sys.all_objects
ORDER BY object_id;

SELECT name
FROM (  SELECT object_id, name, RowNum = ROW_NUMBER() OVER(ORDER BY object_id)
        FROM sys.all_objects
    ) AS o
WHERE RowNum <= @N;

我知道我更容易阅读