ホームページ >データベース >mysql チュートリアル >MySQL で名前でグループ化する前に日付と時刻で並べ替えるにはどうすればよいですか?
MySQL での並べ替えとグループ化の管理: 特定の結果を得るために ORDER BY と GROUP BY を組み合わせる
MySQL で、目的の並べ替えとグループ化を実現します。操作の順序が矛盾すると、データの処理が難しくなる可能性があります。この質問は、データを名前でグループ化する前に日付と時刻で並べ替えることが目標であるシナリオを示しています。
ユーザーが説明しているように、ORDER BY 日付 ASC、時刻 ASC の後に GROUP BY 名を使用する標準的なアプローチです。クエリでは GROUP BY を ORDER BY よりも前に置く必要があるため、失敗します。この競合を解決するために、回答では 2 つの代替方法が提供されています。
方法 1: サブクエリ
最初の方法では、グループ化する前にサブクエリを使用して目的の順序付けを実現します。
<code class="sql">SELECT * FROM ( SELECT * FROM table_name ORDER BY date ASC, time ASC ) AS sub GROUP BY name</code>
このサブクエリは、日付と時刻でソートされたデータを含む一時テーブル sub を作成します。次に、メイン クエリはこの一時テーブルを名前でグループ化し、目的の結果を実現します。
方法 2: 共通テーブル式 (CTE) を使用する
通常使用される別の方法MySQL バージョン 8.0 以降では、並べ替えとグループ化を実行する共通テーブル式 (CTE) を作成します。
<code class="sql">WITH sorted_data AS ( SELECT * FROM table_name ORDER BY date ASC, time ASC ) SELECT * FROM sorted_data GROUP BY name</code>
CTE、sorted_data は、一時テーブルを作成することでサブクエリと同じ結果を達成します。並べ替えられたデータはグループ化のためのメイン クエリで使用されます。
以上がMySQL で名前でグループ化する前に日付と時刻で並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。