問題:
複数の出席行を含むテーブル内ユーザーのデータの場合、目標は、ユーザー ID ごとにグループ化された各ユーザーの最後の出席者数の値のみを取得することです。ただし、order 句で GROUP BY を使用しても、望ましい結果は返されません。
最後の出席値のみを選択するには、次の方法を使用します。
<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>
<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>
<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 中国語 Web サイトの他の関連記事を参照してください。