2016-12-26 97 views
1

當需要排序集合的最後一行時,通常會創建派生表格並重新排序。例如,爲了與自動返回表的最後3個元素遞增id是否可以將LIMIT與子查詢結果一起使用?

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 3 
) t ORDER BY t.id 

由於LIMIT也有偏移,同樣的結果可能是,如果我們知道線的數量來實現(如10)提前與此查詢:

SELECT * FROM table ORDER BY id LIMIT 3 OFFSET 7 

是否有可能運行一個子查詢到count(*)表和動態使用該號碼建立一個LIMIT

SELECT * FROM table ORDER BY id LIMIT 3 OFFSET [ select count() -3 ] 
+1

不,「LIMIT」參數必須是文字,它們不能是表達式。如果您需要動態計算限制,則必須在存儲過程的準備好的查詢中執行此操作,或者使用客戶端語言執行此操作。 – Barmar

+0

我在這裏想的很好,但是你可能可以使用'HAVING'和COUNT()'。儘管如此,我不得不測試這個理論。 –

+0

可能的重複http://stackoverflow.com/questions/41149708/using-as-to-avoid-same-query-mysql/41150070#41150070 –

回答

4

不,不可能指定動態偏移量。

您使用子查詢的原始查詢是最簡單的方法。

相關問題