如何在SQL数据库表中选择第n行?

如何在SQL数据库表中选择第n行?

我有兴趣学习一些(理想的)数据库不可知论的方法来选择n数据库表中的第四行。她还想了解如何使用以下数据库的本机功能来实现这一点:

  • SQLServer
  • MySQL
  • PostgreSQL
  • SQLite
  • 甲骨文

我目前正在SQL Server 2005中执行类似的操作,但我希望看到其他人的更不可知的方法:

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

上述SQL的贷项如下:Firoz Ansari的博客

最新情况:看见特罗尔斯·阿文的回答关于SQL标准。特洛伊,你有什么可以引用的链接吗?


长风秋雁
浏览 1789回答 3
3回答

桃花长相依

这个LIMIT / OFFSETPostgreSQL中的语法是:SELECT     *FROM     mytableORDER BY     somefield LIMIT 1 OFFSET 20;此示例选择第21行。OFFSET 20告诉Postgres跳过前20项记录。如果不指定ORDER BY子句,无法保证您将得到哪些记录,这很少有用。显然,SQL标准没有提到疯狂窗口函数之外的限制问题,这就是为什么每个人实现它的方式不同的原因。

蓝山帝景

我不确定其余的任何一个,但我知道SQLite和MySQL没有任何“默认”行排序。至少在这两种方言中,以下片段从_table抓取第15个条目,并按添加的日期/时间进行排序:SELECT * FROM the_table ORDER BY added DESC LIMIT 1,15(当然,您需要添加一个datetime字段,并将其设置为添加该项的日期/时间.)
打开App,查看更多内容
随时随地看视频慕课网APP