2017-05-25 26 views
0

我有一個場景,我需要獲得一組結果升序順序但只給出降序順序中的最後一個ID。帶有正向結果的MySQL後向查找

enter image description here

順序將總是依次作爲ID升序被然而自動產生的,我不能保證ID序列是完整的。即我不能說8 - 3 = 5,因此從5進行正向查找。

實現這一點最有效的是什麼。如果可能我想避免在應用程序邏輯中操作集合,但可以作爲最後的手段。

+0

向我們展示您的表格結構/數據,並突出顯示我們可以使用哪些信息來施加所需的排序。 –

+0

問題是表結構發生變化。這是基於光標的分頁的實現。所提供的信息是所有表格中唯一的常見數據。 – tarka

+0

如果沒有表格結構,我懷疑你會得到答案。 –

回答

2

你可以做一個內部的選擇:

SELECT * 
FROM (
    SELECT * 
    FROM your_table 
    WHERE id <= X 
    ORDER BY id DESC 
    LIMIT Y 
) d 
ORDER BY id ASC 
1

您可以定義自己的rownum具有查詢和應用mod得到每3個記錄,無論它的ID,如:

SELECT * 
FROM (SELECT id, name, @rownum := @rownum + 1 as `num` 
    FROM test, (SELECT @rownum := 0) a) b 
WHERE b.num % 3 = 0; 

這裏的SQL Fiddle

+0

按OP要求,這將每X選擇一行,而不是來自指定ID的X行。 –