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 中国語 Web サイトの他の関連記事を参照してください。