Maison >base de données >tutoriel mysql >Comment sélectionner des lignes distinctes avec la valeur minimale pour chaque identifiant et horodatage ?

Comment sélectionner des lignes distinctes avec la valeur minimale pour chaque identifiant et horodatage ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-17 20:17:10413parcourir

How to Select Distinct Rows with the Minimum Value for Each ID and Timestamp?

Regroupez par valeur minimale et sélectionnez des lignes uniques

Lorsque vous traitez des données contenant plusieurs lignes pour chaque identifiant et valeur d'horodatage, il est nécessaire de regrouper les données par valeur minimale lors de la sélection de lignes uniques. Cela garantit que chaque identifiant n'est représenté qu'une seule fois par sa première occurrence.

Dans l'exemple de tableau fourni, l'objectif est d'extraire la ligne avec le plus petit record_date pour chaque identifiant. Cependant, le tableau contient des dates en double, ce qui rend difficile la réalisation de cet objectif en utilisant les méthodes traditionnelles.

Ce problème peut être résolu à l'aide de sous-requêtes corrélées et de jointures internes :

<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 méthode comprend :

  1. Créez une sous-requête pour identifier le plus petit record_date pour chaque identifiant.
  2. Rejoignez la table principale (id) avec la sous-requête en utilisant les champs record_date et MyTable.

Le tableau des résultats contient uniquement la ligne avec le plus petit record_date pour chaque identifiant. Cette méthode empêche l’apparition de lignes en double dans la sortie.

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