MySQL每組最后一條記錄的查詢是一種常見的需求,下面我們來了解一下具體操作。
// 示例表格 employees +----+-------+--------+---------+ | id | name | gender | salary | +----+-------+--------+---------+ | 1 | John | M | 50000 | | 2 | Mary | F | 65000 | | 3 | Peter | M | 70000 | | 4 | Jane | F | 55000 | | 5 | Tom | M | 60000 | | 6 | Lily | F | 45000 | +----+-------+--------+---------+ // 查詢每個性別的最高薪資 SELECT gender, MAX(salary) AS max_salary FROM employees GROUP BY gender; // 結果 +--------+------------+ | gender | max_salary | +--------+------------+ | M | 70000 | | F | 65000 | +--------+------------+
但是這樣的查詢結果,只能得到每個性別的最高薪資,無法得到對應的員工信息。
為了獲取每組最后一條記錄,可以借助子查詢和JOIN語句。
SELECT e.* FROM employees e JOIN ( SELECT gender, MAX(salary) AS max_salary FROM employees GROUP BY gender ) t ON e.gender = t.gender AND e.salary = t.max_salary; // 結果 +----+-------+--------+---------+ | id | name | gender | salary | +----+-------+--------+---------+ | 3 | Peter | M | 70000 | | 2 | Mary | F | 65000 | +----+-------+--------+---------+
以上代碼先通過子查詢獲取每個性別的最高薪資,然后通過JOIN語句將員工表與子查詢結果進行連接,得到每組最后一條記錄。
上述代碼通過MySQL中的JOIN實現了從原始數據中選取每個分組的最后一條記錄,實現了分組分析的要求。
上一篇mysql每秒讀
下一篇mysql每次更新2條