Maison >base de données >tutoriel mysql >Comment sélectionner des lignes distinctes avec la valeur minimale pour un champ spécifique dans SQL ?
Sélection de lignes uniques avec la date d'enregistrement la plus ancienne
Supposons que vous ayez une table avec plusieurs entrées pour chaque identifiant unique et que vous deviez récupérer uniquement les lignes uniques représentant la date d'enregistrement la plus ancienne pour chaque identifiant. Ceci est particulièrement utile lorsqu'il s'agit de dates d'enregistrement en double.
Voici une requête SQL qui résout efficacement ce problème :
<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>
Cette requête fonctionne en deux étapes :
Rechercher les dates minimales : La requête interne (SELECT id, MIN(record_date) AS MinDate FROM MyTable GROUP BY id
) identifie le minimum record_date
pour chaque id
unique.
Sélectionnez les lignes correspondantes : La requête externe joint les résultats de la requête interne à la table d'origine (MyTable
). Il sélectionne uniquement les lignes de MyTable
où id
et record_date
correspondent à la date minimale trouvée dans la requête interne.
Le résultat final contient uniquement les lignes avec le record_date
le plus ancien pour chaque identifiant unique, éliminant ainsi les lignes en double avec des dates d'enregistrement différentes.
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!