2017-06-06 109 views
0

這裏是我的查詢MySQL的返回一個記錄是不一樣的最後一個記錄

SELECT `orders_status_id` FROM orders_status_history 
WHERE `orders_id`='15' ORDER BY `date_added` DESC LIMIT 1, 1 

我需要是從上述查詢一堆records.The的得到的倒數第二個記錄是什麼在這一點上工作但現在我想放置過濾器,如果倒數第二個記錄是空的或與上一個相同,則移動一個記錄前一個。

enter image description here

正如你所看到的倒數第二個記錄orders_status_id爲17(同最後一條記錄),因此它應該返回我「8」(移動一步了)。當第二個記錄爲空時應用相同的情況,然後向上移動一步。在這個例子中,如果不是「8」而是「17」或者是空的,那麼它應該再向上移動一步,直到它不是最後一個或空白。

感謝

編輯: 這是我得到 enter image description here

回答

0

最簡單的方法可能是使用變量中的錯誤:

SELECT osh.* 
FROM (SELECT osh.orders_status_id, 
      (@rn := if(@osi = osh.orders_status_id, @rn, 
         if(@osi := osh.orders_status_id, @rn + 1, @rn + 1) 
         ) 
      ) rn 
     FROM orders_status_history osh CROSS JOIN 
      (SELECT @rn := 0, @osi := -1) params 
     WHERE orders_id = 15 
     ORDER BY date_added DESC 
    ) osh 
WHERE rn = 2 
LIMIT 1; 

此列舉的order_status_id不同的值,選擇出現的第二個值。

+0

感謝您的回答.. 請再次檢查我的問題附加了我應用您的查詢後得到的錯誤消息。 –

相關問題