在 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中文網其他相關文章!