我有兴趣学习一些(理想情况下)数据库无关的方法来从数据库表中选择第n行.看看如何使用以下数据库的本机功能实现这一目标也很有趣:
我目前正在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
Run Code Online (Sandbox Code Playgroud)
感谢上述SQL:Firoz Ansari的Weblog
更新:请参阅Troels Arvin关于SQL标准的答案.Troels,您有任何我们能引用的链接吗?
如果这:
SELECT *
FROM Table
WHERE Date=( SELECT MAX(Date)
FROM Table
)
Run Code Online (Sandbox Code Playgroud)
从表中返回最新记录,如何获得第二个最新记录?
假设我有一个类似于以下的表:
Item Description Time
----- ----------- -----
ItemA1 descript 08-16-2013 00:00:00
ItemA2 descript 08-16-2013 00:00:00
ItemA3 descript 08-16-2013 00:00:00
.
.
ItemAN descript 08-16-2013 00:00:00
ItemB1 descript 08-13-2013 00:00:00
ItemB2 descript 08-13-2013 00:00:00
ItemB3 descript 08-13-2013 00:00:00
.
.
ItemBN descript 08-13-2013 00:00:00
.
.
.
ItemX1 descript 01-13-2012 00:00:00
ItemX2 descript 01-13-2012 00:00:00
ItemX3 descript 01-13-2012 00:00:00
.
.
ItemXN descript 01-13-2012 00:00:00
Run Code Online (Sandbox Code Playgroud)
定期添加项目组.添加一组项目时,它们都添加了相同的"时间"字段."时间"基本上用作该项目组的唯一索引.
我想选择时间第二高的项目组.在此示例中,我的查询应该拉出"B"项.我知道我可以做max(time)来选择"A"项,但我不知道我会怎么做到最后.
我的"时间"列存储为TIMESTAMP,如果这意味着什么.