我按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 :(得分:1)
你正在滥用令人难以置信的非标准MySQL扩展名GROUP BY
。读这个。 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html(这个扩展就像一匹会说话的马。我们不会怀疑它是否有效。我们想知道它是否有效。)
您可以从表中获取HISTORY_ID
的每个值SERIAL_NUMBER
的最新(最大)值,如下所示:
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)