Mysql

如何獲得相似值的最大行值

  • November 24, 2021

在下面的表格中,我有一些欄位重複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_id3不是1 所以我想編寫一個查詢來獲取這些欄位 max_idjob_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_ids、它們的相關max_id正確的相關job_status_id。如果您還想要其他欄位,請刪除外部查詢SELECT列表中的註釋。

請參閱此 dbfiddle以獲取工作範例。

引用自:https://dba.stackexchange.com/questions/303018