如何在SQL Server Management Studio中限制查询返回行数?
在SQL Server中限制返回行数的正确方法
SQL Server(包括你使用的SQL Server Management Studio)不支持LIMIT语法,这个语法常见于MySQL、PostgreSQL等数据库,这就是你触发报错的原因。要限制返回指定数量的数据,有两种常用的可行方法:
方法1:使用TOP子句
这是SQL Server传统的行限制方式,直接在SELECT后指定要返回的行数:
SELECT TOP 3 [Column A] FROM [DB].[Ordering In DB].[Table] WHERE [Column B] = 30;
如果需要动态指定行数(比如用变量@x),可以这样写:
DECLARE @x INT = 5; SELECT TOP (@x) [Column A] FROM [DB].[Ordering In DB].[Table] WHERE [Column B] = 30;
方法2:使用OFFSET...FETCH NEXT(SQL Server 2012及以上版本)
这是符合ANSI标准的语法,更适合分页场景,但必须搭配ORDER BY子句使用(否则返回的行顺序不确定):
SELECT [Column A] FROM [DB].[Ordering In DB].[Table] WHERE [Column B] = 30 ORDER BY [Column A] -- 指定排序字段保证结果稳定 OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY;
如果要获取后续区间的数据(比如第4到第6条),只需修改参数:OFFSET 3 ROWS FETCH NEXT 3 ROWS ONLY即可。
内容的提问来源于stack exchange,提问作者svsw13
相关产品推荐
相关产品推荐

