Maison >base de données >tutoriel mysql >Comment sélectionner des lignes distinctes avec la valeur minimale pour un champ spécifique dans SQL ?

Comment sélectionner des lignes distinctes avec la valeur minimale pour un champ spécifique dans SQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 20:15:10577parcourir

How to Select Distinct Rows with the Minimum Value for a Specific Field in 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 :

  1. 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.

  2. 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 MyTableid 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!

Déclaration:
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