Maison > base de données > tutoriel mysql > Comment trouver efficacement le premier enregistrement pour chaque identifiant distinct dans une table avec des dates en double ?

Comment trouver efficacement le premier enregistrement pour chaque identifiant distinct dans une table avec des dates en double ?

Linda Hamilton
Libérer: 2025-01-17 19:56:14
original
430 Les gens l'ont consulté

How to Efficiently Find the Earliest Record for Each Distinct ID in a Table with Duplicate Dates?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal