MySQL を使用してグループ化されたテーブルの最後の値のみを選択する方法

Linda Hamilton
リリース: 2024-11-03 08:29:03
オリジナル
517 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート