如何修改SQL SELECT语句以返回第5行及之后的结果?
如何修改SQL语句返回第5行及之后的结果
你的原SQL语句如下:
select PersonID AS Field_Value , CONVERT(varchar(8), PersonID) + ' // ' + pfname +' '+ plname AS Display_Value from [*].[*].[*]
要返回第5行及之后的结果,需根据你使用的数据库类型调整语法,以下是常见方案:
SQL Server(匹配你原语句的语法风格)
方案1:使用OFFSET...FETCH(SQL Server 2012+支持)
select PersonID AS Field_Value , CONVERT(varchar(8), PersonID) + ' // ' + pfname +' '+ plname AS Display_Value from [*].[*].[*] ORDER BY PersonID -- 必须指定排序字段,否则结果顺序无意义 OFFSET 4 ROWS -- 跳过前4行,从第5行开始返回所有剩余记录
方案2:使用ROW_NUMBER()窗口函数
SELECT Field_Value, Display_Value FROM ( select PersonID AS Field_Value, CONVERT(varchar(8), PersonID) + ' // ' + pfname +' '+ plname AS Display_Value, ROW_NUMBER() OVER(ORDER BY PersonID) AS rn from [*].[*].[*] ) t WHERE rn >= 5 -- 筛选行号≥5的记录
其他数据库参考写法
- MySQL/MariaDB
select PersonID AS Field_Value , CONVERT(varchar(8), PersonID) + ' // ' + pfname +' '+ plname AS Display_Value from [*].[*].[*] ORDER BY PersonID OFFSET 4;
- PostgreSQL
select PersonID AS Field_Value , CAST(PersonID AS varchar(8)) || ' // ' || pfname ||' '|| plname AS Display_Value from [*].[*].[*] ORDER BY PersonID OFFSET 4;
重要提示
- 必须添加
ORDER BY子句,否则数据库返回的行顺序不固定,“第5行”的定义没有实际意义。 - 请将语句中的
[*].[*].[*]替换为你实际的数据库名、架构名和表名。
内容的提问来源于stack exchange,提问作者Majid Maddah
相关产品推荐
相关产品推荐

