2016-10-12 51 views
0

我通過分組結果SERIAL_NUMBER,我想根據記錄ID DESC爲每個組顯示的最後一個記錄分組最新記錄這是我有這麼遠:想回到那裏結果被

SELECT * FROM 

(SELECT `SERIAL_NUMBER`, `PART_NUMBER` , `POSITION` , `DUE_CAP_CHECK_DATE` , `DUE_OVERHAUL_DATE` 
    FROM `history_card` ORDER BY `HISTORY_ID` DESC) AS X 

GROUP BY `SERIAL_NUMBER` 

,但它不返回的最後一條記錄,則返回第一個;(

+0

你爲什麼使用嵌套查詢?這將做得很好...... SELECT'SERIAL_NUMBER','PART_NUMBER','POSITION','DUE_CAP_CHECK_DATE','DUE_OVERHAUL_DATE' FROM'history_card' GROUP BY'SERIAL_NUMBER' ORDER BY'HISTORY_ID' DESC –

+1

是的,我已經只是試過它的工作,但它仍然給我,第一行,而不是每個組的最後一個,這就是爲什麼我試圖首先做子查詢由HISTORY_ID desc命令他們,然後選擇 – Mikail

回答

1

您濫用heinously混亂的非標準MySQL擴展到GROUP BY閱讀本https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html(這個擴展是像一個會說話的馬我們。不要懷疑它工作不好,我們不知道它是否有效。)

你可以從你的表像這樣的SERIAL_NUMBER每個值獲得的HISTORY_ID最新(最大)值:

SELECT MAX(HISTORY_ID) FROM history_card GROUP BY SERIAL_NUMBER 

然後你可以使用該組HISTORY_ID值來檢索您從表中想要的東西。

SELECT SERIAL_NUMBER, PART_NUMBER, POSITION, DUE_CAP_CHECK_DATE, DUE_OVERHAUL_DATE 
    FROM history_card 
    WHERE HISTORY_ID 
     IN (SELECT MAX(HISTORY_ID) FROM history_card GROUP BY SERIAL_NUMBER)    
相關問題