MySQL の最大日時値を別の列でグループ化して抽出する
データベース クエリでは、多くの場合、複数の条件に基づいて特定のデータを取得する必要があります。 よくあるタスクには、別の列で分類された列の最大値を含む行を選択することが含まれます。このガイドでは、プレーヤーのパフォーマンス テーブルを例として使用した MySQL ソリューションを説明します。
列「id」、「home」、「datetime」、「player」、および「resource」を持つ「TopTen」という名前のテーブルについて考えてみましょう。目標は、一意の「自宅」の場所ごとに最新 (「日時」) エントリを含む行をフェッチすることです。
サブクエリや結合などのさまざまな方法を検討した結果、最も効果的なクエリは次のとおりであることが判明しました。
<code class="language-sql">SELECT tt.* FROM topten tt INNER JOIN (SELECT home, MAX(datetime) AS MaxDateTime FROM topten GROUP BY home) groupedtt ON tt.home = groupedtt.home AND tt.datetime = groupedtt.MaxDateTime;</code>
このクエリは 2 段階で機能します。 まず、個別の「ホーム」ごとに最大の「日時」を格納する一時テーブル (「groupedtt」) を生成します。 続いて、'home' と 'datetime' の両方を結合条件として使用して、'TopTen' ('tt') を 'groupedtt' と結合します。 これにより、各「ホーム」の最大「日時」を持つ行のみが返されるようになります。
このアプローチは、MySQL 内の別の列によってパーティション化された最大列値を持つ行を取得する効率的な方法を提供し、データベースからの対象となる関連データの抽出を容易にします。
以上がMySQLの家によって分割された最大のDateTime値で行を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。