从 SQL 表中检索第 n 行
本指南演示如何从 SQL 数据库表中选择第 n 行,涵盖与数据库无关的方法和特定于数据库的方法。
通用方法
虽然 SQL 标准提供行选择功能,但许多数据库系统以不同的方式实现它们。可靠的跨数据库方法采用带有 ROW_NUMBER()
分析函数的子查询:
<code class="language-sql">WITH OrderedRows AS ( SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNum, OrderID, OrderDate FROM Orders ) SELECT * FROM OrderedRows WHERE RowNum = n</code>
将 n
替换为所需的行号,将 OrderID
替换为您的主键或排序列,将 Orders
替换为您的表名称。
特定于数据库的技术
PostgreSQL 和 MySQL:
这些数据库使用 OFFSET
和 LIMIT
子句(请注意,这是一种非标准方法):
<code class="language-sql">SELECT * FROM your_table LIMIT 1 OFFSET n-1;</code>
这里使用n-1
,因为OFFSET
从0开始计数。
Oracle、DB2 和 MSSQL:
这些系统支持标准窗口函数:
<code class="language-sql">SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY key_column ASC) AS rn, * FROM your_table ) AS numbered_rows WHERE rn = n;</code>
将 key_column
替换为您的主键或排序列,将 your_table
替换为您的表名称,将 n
替换为所需的行号。
PostgreSQL 和 SQLite 更新:
PostgreSQL 8.4 及更高版本和 SQLite 3.25.0 及更高版本都支持标准窗口函数,使得上述通用方法完全兼容。
以上是如何从 SQL 数据库表中选择第 n 行?的详细内容。更多信息请关注PHP中文网其他相关文章!