ホームページ  >  記事  >  データベース  >  「GROUP BY」を使用して MySQL でグループの最後の値を取得する方法は?

「GROUP BY」を使用して MySQL でグループの最後の値を取得する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 06:45:02350ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。