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