SQL Developer连接MSSQL时无法使用ROWNUM限制行数的问题
MSSQL中限制查询结果行数的正确方法
你使用的rownum是Oracle数据库专属的伪列,SQL Server(MSSQL)并不支持该语法,因此会提示「Invalid column name 'rownum'」。针对MSSQL,有两种常用的方法可以限制查询结果的行数:
1. 使用TOP子句(兼容所有SQL Server版本)
这是MSSQL传统的行数限制方式,直接在SELECT后指定要返回的行数。你的需求是返回前39行(对应原语句的rownum < 40),写法如下:
SELECT TOP 39 * FROM student3;
如果需要先对结果排序再限制行数(推荐,避免返回顺序不确定):
SELECT TOP 39 * FROM student3 ORDER BY student_id; -- 替换student_id为实际排序字段
2. 使用OFFSET/FETCH NEXT语法(SQL Server 2012及以上版本)
这是符合SQL标准的语法,灵活性更高,支持跳过指定行数后再取数据:
SELECT * FROM student3 OFFSET 0 ROWS FETCH NEXT 39 ROWS ONLY;
OFFSET 0 ROWS:表示不跳过任何行FETCH NEXT 39 ROWS ONLY:表示只取接下来的39行
同样,结合排序的写法:
SELECT * FROM student3 ORDER BY student_id -- 替换student_id为实际排序字段 OFFSET 0 ROWS FETCH NEXT 39 ROWS ONLY;
内容的提问来源于stack exchange,提问作者Harsh
相关产品推荐
相关产品推荐

