Extraction du premier enregistrement pour chaque identifiant unique, gestion des dates en double
Imaginez un tableau (appelons-le MyTable
) avec des colonnes : key_id
, id
, record_date
et d'autres colonnes (other_cols
). L'objectif est d'identifier la ligne contenant le record_date
le plus ancien pour chaque id
unique.
Les méthodes standard supposent souvent des valeurs record_date
uniques, mais nos données peuvent contenir des doublons. Les requêtes complexes utilisant des sous-requêtes et des jointures peuvent conduire à des résultats inutiles.
Une approche plus rationalisée utilise une sous-requête :
<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>
La sous-requête interne trouve efficacement le premier record_date
(MinDate
) pour chaque id
en regroupant les données. La requête externe joint ensuite ce résultat à la table d'origine (MyTable
), en sélectionnant uniquement les lignes où le record_date
correspond à la date minimale trouvée dans la sous-requête. Cela récupère efficacement le premier enregistrement pour chaque id
unique, en gérant les dates en double avec élégance et en évitant les données redondantes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!