比如,在MySQL數據庫中,有數據表messages和數據記錄,如下:
Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data_1
如果執行MySQL分組查詢語句,如下:
select * from messages group by name
則會返回所有按name分組的第一條數據,如下:
1 A A_data_1 4 B B_data_1 6 C C_data_1
那么,如何查詢按name分組后返回每組最后一條數據的MySQL語句呢,返回的結果如下:
3 A A_data_3 5 B B_data_2 6 C C_data_1
解決方案
使用MySQL的IN(...)子句,如下:
SELECT id, name, other_columns FROM messages WHERE id IN (SELECT MAX(id) FROM messages GROUP BY name);