首頁 >資料庫 >mysql教程 >如何使用 MySQL 僅選擇分組表中的最後一個值?

如何使用 MySQL 僅選擇分組表中的最後一個值?

Linda Hamilton
Linda Hamilton原創
2024-11-03 08:29:03563瀏覽

How to Select Only the Last Value in a Grouped Table Using MySQL?

在MySQL 中使用GROUP BY 只選擇最後一個值

問題:

在包含多行考勤的表中對於用戶數據,目標是僅獲取每個用戶的最後一次出勤值,按用戶ID 分組。但是,使用帶有 order 子句的 GROUP BY 不會傳回所需的結果。

解決方案:

要只選擇最後一個出勤值,請使用以下方法:

  1. 建立一個子查詢來選擇每行的ID、時間戳和出勤率。按時間戳降序對行進行排序,以檢索每個使用者的最新考勤情況。
<code class="sql">SELECT id_member, MAX(timestamp) AS last_timestamp, attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_member
ORDER BY last_timestamp DESC;</code>
  1. 使用 IN 將子查詢連接回原始表以選擇時間戳匹配的行子查詢中的last_timestamp。
<code class="sql">SELECT id_branch_channel, id_member, attendance, timestamp, id_member
FROM view_event_attendance
WHERE (id_member, last_timestamp) IN (
    SELECT id_member, MAX(timestamp) AS last_timestamp
    FROM view_event_attendance
    WHERE id_event = 782
    GROUP BY id_member
    ORDER BY last_timestamp DESC
);</code>
  1. 或者,使用相關子查詢來選擇每位使用者的最後一次出席。
<code class="sql">SELECT id_branch_channel, id_member, attendance, timestamp, id_member
FROM view_event_attendance AS t1
WHERE timestamp = (SELECT MAX(timestamp)
                   FROM view_event_attendance AS t2
                   WHERE t1.id_member = t2.id_member AND t1.id_event = t2.id_event);</code>

注意:此解決方案避免使用帶有 ORDER BY 子句的 GROUP BY,這對於大型表來說效率低下。

以上是如何使用 MySQL 僅選擇分組表中的最後一個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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