在SQL Server 2008中是不允许LIMIT?

时间:2014-06-10 23:08:36

标签: sql sql-server-2008

我有一个查询

  SELECT employeedept, execoffice_status, employee, COUNT(*) AS 'employeetotal', YEAR_cse1 =YEAR(execoffice_date)
FROM CSEReduxResponses
WHERE execoffice_status = 1
GROUP BY employeedept, execoffice_status, YEAR(execoffice_date), employee 
order by [YEAR_cse1],
LIMIT 20

当我添加LIMIT时,它会给我一个错误"语法不正确' 20'。"。 还有另一种方法可以获得前20名吗?

我有 Microsoft SQL Server Management Studio 10.0.2531.0,SQL Server 2008。

2 个答案:

答案 0 :(得分:1)

您可能正在寻找top

SELECT TOP 20 employeedept, execoffice_status, employee,
COUNT(*) AS 'employeetotal',YEAR_cse1 =YEAR(execoffice_date)
FROM CSEReduxResponses
WHERE execoffice_status = 1
GROUP BY employeedept, execoffice_status, YEAR(execoffice_date), employee 
order by [YEAR_cse1]

答案 1 :(得分:0)

如果您read the documentation for select,您会看到它使用关键字topwhose documentation表示它

  

将查询结果集中返回的行限制为指定的行数或   SQL Server 2012中的行百分比。当TOP与ORDER BY一起使用时   子句,结果集仅限于前N个有序行数;否则,它   以未定义的顺序返回前N行。使用此子句指定   从SELECT语句返回或受INSERT,UPDATE,MERGE影响的行数,   或DELETE语句。

所以你可以通过说出像

这样的东西来得到你想要的东西
select top 20
       *
from foo