gpt4 book ai didi

mysql - 如何选择 SQL 数据库表中的第 n 行?

转载 作者:IT老高 更新时间:2023-10-28 12:47:41 25 4
gpt4 key购买 nike

我有兴趣学习一些(理想情况下)与数据库无关的从数据库表中选择第 n 行的方法。看看如何使用以下数据库的 native 功能来实现这一点也很有趣:

  • SQL 服务器
  • MySQL
  • PostgreSQL
  • SQLite
  • 甲骨文

我目前在 SQL Server 2005 中执行以下类似操作,但我有兴趣了解其他更不可知的方法:

WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000

以上 SQL 的功劳:Firoz Ansari's Weblog

更新:Troels Arvin's answer关于 SQL 标准。 Troels,你有我们可以引用的链接吗?

最佳答案

在标准的可选部分中有这样做的方法,但是很多数据库都支持他们自己的方法。

http://troels.arvin.dk/db/rdbms/#select-limit 是一个非常好的讨论这个和其他事情的网站。 .

PostgreSQL 和 MySQL 基本上都支持非标准的:

SELECT...
LIMIT y OFFSET x

Oracle、DB2 和 MSSQL 支持标准窗口函数:

SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber,
columns
FROM tablename
) AS foo
WHERE rownumber <= n

(我只是从上面链接的站点复制的,因为我从不使用这些数据库)

更新:从 PostgreSQL 8.4 开始支持标准的窗口函数,所以希望第二个示例也适用于 PostgreSQL。

更新: SQLite 在 2018 年 9 月 15 日的 3.25.0 版本中添加了窗口函数支持,因此这两种形式也可以在 SQLite 中使用。

关于mysql - 如何选择 SQL 数据库表中的第 n 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com