各一意の ID の最初のレコードを抽出し、重複する日付を処理する
列 MyTable
、key_id
、id
、およびその他の列 (record_date
) を含むテーブル (other_cols
と呼びます) を想像してください。 目標は、すべての一意の record_date
について、最も古い id
を含む行を特定することです。
標準メソッドでは、多くの場合、一意の record_date
値が想定されますが、データには重複がある可能性があります。 サブクエリと結合を使用した複雑なクエリは、不要な結果を招く可能性があります。
より合理化されたアプローチでは、サブクエリを使用します。
<code class="language-sql">SELECT mt.* FROM MyTable mt INNER JOIN ( SELECT id, MIN(record_date) AS MinDate FROM MyTable GROUP BY id ) t ON mt.id = t.id AND mt.record_date = t.MinDate;</code>
内部サブクエリは、データをグループ化することで、各 record_date
の最も古い MinDate
(id
) を効率的に見つけます。次に、外側のクエリはこの結果を元のテーブル (MyTable
) に結合し、record_date
がサブクエリで見つかった最小の日付と一致する行のみを選択します。 これにより、一意の各 id
の最も古いレコードが効果的に取得され、重複する日付が適切に処理され、冗長データが回避されます。
以上が重複した日付を持つテーブル内の各個別 ID の最も古いレコードを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。