Maison > base de données > tutoriel mysql > Comment sélectionner les 3 enregistrements les plus récents avec des valeurs uniques dans une autre colonne ?

Comment sélectionner les 3 enregistrements les plus récents avec des valeurs uniques dans une autre colonne ?

Barbara Streisand
Libérer: 2024-11-27 03:47:09
original
223 Les gens l'ont consulté

How to Select the 3 Most Recent Records with Unique Values in Another Column?

Sélection des enregistrements les plus récents avec des valeurs distinctes : une approche révisée

La question présentée concerne la récupération des trois enregistrements les plus récents à partir d'une table basée sur sur une colonne de temps, avec la condition supplémentaire que ces enregistrements doivent avoir des valeurs distinctes dans une autre colonne, appelée autreidentifiant. Pour y parvenir, une requête SQL à multiples facettes est nécessaire.

Inconvénients de la requête originale

La requête initialement tentée a rencontré des limitations en raison de l'ordre inhérent des opérations dans SQL. Le regroupement s'effectue avant la commande, ce qui entraîne le renvoi de données incorrectes.

La requête révisée

Pour résoudre ce problème, une requête plus sophistiquée est requise :

SELECT *
FROM `table`
WHERE `id` = (
    SELECT `id`
    FROM `table` as `alt`
    WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
    ORDER BY `time` DESC
    LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3
Copier après la connexion

Explication :

  • La sous-requête récupère le identifiant de l’enregistrement le plus récent pour chaque autre valeur d’identifiant distincte. Cette sous-requête garantit l'unicité.
  • La requête principale sélectionne ensuite les trois premiers enregistrements de la table en fonction de la colonne de temps, en s'assurant qu'ils ont des valeurs otheridentifier uniques.
  • Enfin, ces enregistrements sont classés par leurs valeurs temporelles par ordre décroissant et limitées aux trois plus récentes.

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