ホームページ  >  記事  >  データベース  >  MySQL の GROUP BY 句を使用して各ユーザーの最新の出席状況を取得するにはどうすればよいですか?

MySQL の GROUP BY 句を使用して各ユーザーの最新の出席状況を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-28 05:15:30136ブラウズ

How to Retrieve the Latest Attendance for Each User Using MySQL's GROUP BY Clause?

MySQL の Group By を使用した最新の値の選択

MySQL の GROUP BY 句を使用して各ユーザーの最新の出席状況を取得しようとすると、必要な最新の値ではなく、最初の出席者数が返される場合があります。

サブクエリの使用

解決策の 1 つは、サブクエリを利用して最大タイムスタンプを識別することです。各メンバーについて、このサブクエリをメイン テーブルと結合します。

<code class="sql">SELECT *
FROM view_event_attendance AS t1
WHERE id_event = 782
AND timestamp = (SELECT MAX(timestamp)
                  FROM view_event_attendance AS t2 
                  WHERE t1.id_member = t2.id_member 
                    AND t1.id_event = t2.id_event 
                  GROUP BY id_event, id_member)
GROUP BY id_event, id_member;</code>

連結と MAX() を使用する

別のアプローチでは、タイムスタンプと出席の値を連結し、次に、MAX() を使用して結合された値を選択します。

<code class="sql">SELECT substring(max(concat(from_unixtime(timestamp),attendance)) from 20) as attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_event,id_member;</code>

このメソッドは、各メンバーの最新の出席値のみを返します。

連結されたタイムスタンプ/出席者の選択

タイムスタンプと出席者数の値を連結して取得したい場合は、次のクエリを使用できます。

<code class="sql">SELECT concat(from_unixtime(timestamp),attendance), timestamp, attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_event,id_member;</code>

パフォーマンスに関する考慮事項

処理時大規模なデータセットでは、サブクエリの計算コストが高くなる可能性があります。値を連結して MAX() を使用すると、パフォーマンスが向上します。ただし、特定の要件とデータベースの特性を評価して、ユースケースに最適なソリューションを決定することが重要です。

以上がMySQL の GROUP BY 句を使用して各ユーザーの最新の出席状況を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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