Mysql
如何獲得相似值的最大行值
在下面的表格中,我有一些欄位重複
id
的欄位。我想獲取每個對應 的欄位的值。job_id``job_id``MAXIMUM``id``unique
job_id
我現在已經嘗試了該
GROUP_BY
子句,但它沒有給我正確的結果。例如,
SELECT MAX(id) AS max_id, job_id FROM job_status_update GROUP BY job_id
會產生:
但是從第一張圖片來看,job_status_update 表
id
中的6對應於job_status_id
3而不是1 所以我想編寫一個查詢來獲取這些欄位max_id
:job_id
請問有人可以給我一個關於該怎麼做的指針嗎?謝謝!
id
由於您真的想要除 max per之外的整行(或至少行本身的其他欄位) ,因此您可以使用像ROW_NUMBER()這樣job_id
的視窗函式來完成此操作,如下所示:-- only latest row per job_id SELECT id AS max_id, job_id, job_status_id --, updated_by, date_added, last_updated FROM ( SELECT id, job_id, job_status_id, updated_by, date_added, last_updated, ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY id DESC) AS GroupSortId FROM job_status_update ) Results WHERE GroupSortId = 1 -- returns only the latest row per grouping of job_id
這會將所有重複
job_id
的 s 分組並僅返回每個分組的最大行,從而產生不同的結果集job_id
s、它們的相關max_id
和正確的相關job_status_id
。如果您還想要其他欄位,請刪除外部查詢SELECT
列表中的註釋。請參閱此 dbfiddle以獲取工作範例。