提取每个唯一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中文网其他相关文章!