首頁 >資料庫 >mysql教程 >如何使用「GROUP BY」檢索 MySQL 中某個群組的最後一個值?

如何使用「GROUP BY」檢索 MySQL 中某個群組的最後一個值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-28 06:45:02441瀏覽

How to Retrieve the Last Value for a Group in MySQL Using `GROUP BY`?

在 MySQL 中,可以使用 GROUP BY 來選擇給定行組的最後一個值,但不能直接實作。用於實現此目的的技術是在執行分組之前首先將所需的列與唯一識別碼(例如時間戳)連接。

考慮以下查詢:

<code class="sql">SELECT id_branch_channel, id_member, MAX(CONCAT(timestamp, attendance)) AS last_attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_branch_channel, id_member;</code>

在此查詢時,我們將每行的時間戳和出勤列連接成一個字串。這使我們能夠捕獲與每對唯一的 id_branch_channel 和 id_member 相關的最後記錄的出勤情況。然後使用 MAX() 函數選擇連接字串的最大值,有效地為我們提供每組的最後記錄的出勤情況。

一旦確定了最後的出勤情況,我們就可以使用 SUBSTRING()函數從連接的字串中只提取出勤值。這可以透過以下查詢來實現:

<code class="sql">SELECT id_branch_channel, id_member, SUBSTRING(last_attendance, 19) AS attendance
FROM (
    SELECT id_branch_channel, id_member, MAX(CONCAT(timestamp, attendance)) AS last_attendance
    FROM view_event_attendance
    WHERE id_event = 782
    GROUP BY id_branch_channel, id_member
) AS subquery;</code>

此查詢使用子查詢來執行初始分組和串聯,然後使用 SUBSTRING() 函數從結果中僅選擇出勤列。

透過使用此技術,我們可以有效地選擇 view_event_attendance 表中每組行的最後記錄的出勤情況。

以上是如何使用「GROUP BY」檢索 MySQL 中某個群組的最後一個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn