參考此問題,Oracle平臺沒有給出解決方案/答案。 Selecting Nth Record in an SQL Query通過記錄號查詢SQL查詢
沒有排序或組或where子句。根據插入的記錄進行訂購。
這樣做的原因是,我的申請日誌中指出記錄號7,34,46是拋出錯誤。有沒有任何正確的方法來歸檔?
Thx提前。
參考此問題,Oracle平臺沒有給出解決方案/答案。 Selecting Nth Record in an SQL Query通過記錄號查詢SQL查詢
沒有排序或組或where子句。根據插入的記錄進行訂購。
這樣做的原因是,我的申請日誌中指出記錄號7,34,46是拋出錯誤。有沒有任何正確的方法來歸檔?
Thx提前。
至於我可以告訴大家,從該鏈接接受的答案是(幾乎)完全合法的Oracle:
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS "RowNumber"
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE "RowNumber" = 5;
Oracle有一個解析函數ROW_NUMBER()的語法如下。我將單引號更改爲雙列引號,但我認爲其他所有內容都很好。
UPDATE:
據檢索基於插入時間第N個記錄,你不能依賴Oracle來維護您的插入順序。如果您沒有指定排序順序,則不能保證結果將返回到什麼順序。如果您有一個總是由序列填充的主鍵,則可以使用該鍵排序。或者,您可以在插入時填充時間戳列,然後使用該列進行排序。長話短說,沒有指定排序順序,你不能有一個有意義的第N條記錄查詢。 「
我們可以在不訂購的情況下使用它嗎? – 2012-04-09 07:00:47
@丹娜:你的評論應該是你答案的一部分。由於OP希望通過插入時間進行排序,我認爲答案應該說明如何(以及如果)這是可能的。 – 2012-04-09 07:52:38
@ZaimanNoris:沒有。你可以**不**在沒有排序的情況下確定「第n」行。 – 2012-04-09 08:18:27
」按照插入的記錄訂購。「你將按某個列排序。插入順序不被維護。 – Thilo 2012-04-09 06:16:09
沒有「*根據插入的記錄訂購*」這樣的東西。行的phyiscal位置可能隨時間而改變。您只能通過將插入時間存儲在時間戳中來確定插入行的順序。 – 2012-04-09 08:16:49