我有兴趣学习一些(理想情况下)从数据库表中选择第n行的数据库不可知方法。看看如何使用以下数据库的本机功能来实现此目的也将很有趣:
- 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的Weblog
更新:有关SQL标准,请参见Troels Arvin的答案。Troels,您有没有我们可以引用的链接?
OrderNo N
,则在表中引入OrderSequenceNo列,并在创建新订单时从独立的序列生成器生成它。
offset x fetch first y rows only
。当前受(至少)Postgres,Oracle12,DB2支持。