2017-04-05 67 views
-1

去除的地方,顯然StackOverflow的不是理論討論刪除,顯然計算器不是理論討論

+0

爲什麼不使用LIMIT子句? –

+0

你可以迭代使用帶有連接的子查詢。但是如果你想得到一個有序的返回值,你需要在子查詢中使用'ORDER BY'。如果你不能使用'ORDER BY',那麼如果你必須使用純SQL,那麼我認爲你運氣不好。 – Barmar

+1

我不是100%確定我明白你想要做什麼。這就是爲什麼樣本數據和預期結果非常有用。 –

回答

2

如果我理解正確的地方,這是你的問題:

你沒有按功能順序訪問,但有一組值 和(單調增加1)rownumbers,並且想要排序的 返回。

你缺少有關SQL一個非常重要的一點:表代表無序套。結果集是無序,除非您明確指定使用ORDER BY的順序。

子查詢 - 相關或其他 - 不會以任何一致和可靠的方式影響排序。如果你想「排序返回」,你必須使用ORDER BY

+0

是的,但是,不要粗魯,當我特別試圖瞭解如何在mysql中執行操作時使用順序並不特別有用。沒有row_number這顯然沒有任何意義,但是我的目標是嘗試使用這些額外的信息來獲得我想要的執行。 –

+1

@GeorgeGreen是的,但這就像是要求散列表中的第N項。這就是爲什麼這是一個奇怪的問題。這是一個非確定性結果,而SQL是關於確定性的。如果您將其設置爲任意行編號,則可以針對相同的表執行相同的查詢,並且 - 不帶'ORDER BY' - 會得到不同的結果,並且*仍然正確*。 SQL是關於編寫*不*這樣做的查詢。 –