Maison > base de données > tutoriel mysql > Comment puis-je trouver les trois ID d'enregistrement distincts les plus récents en fonction d'une colonne partagée ?

Comment puis-je trouver les trois ID d'enregistrement distincts les plus récents en fonction d'une colonne partagée ?

Patricia Arquette
Libérer: 2024-11-29 16:06:13
original
391 Les gens l'ont consulté

How Can I Find the Three Most Recent Distinct Record IDs Based on a Shared Column?

Quels identifiants d'enregistrement distincts sont les plus récents ?

Dans une table de base de données donnée, certains enregistrements sont interconnectés par une colonne partagée. L'objectif est d'identifier les trois identifiants d'enregistrement distincts les plus récents associés à cette valeur de colonne partagée.

Pour y parvenir, considérez l'exemple de tableau ci-dessous :

id time text otheridentifier
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2

Dans un premier temps, une approche intuitive pourrait être à regrouper par la colonne otheridentifier et ensuite à trier par temps décroissant. Cependant, cette méthode ne donnerait pas le résultat souhaité :

SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3;
Copier après la connexion

Cette requête inclurait par erreur les enregistrements avec les identifiants 3 et 1 au lieu des identifiants corrects 4 et 2. La raison de cette différence réside dans l'exécution de la requête. ordre : le regroupement a priorité sur l'ordre.

Pour obtenir les résultats escomptés, une solution plus complexe est obligatoire :

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

Cette requête modifiée utilise une sous-requête pour sélectionner l'identifiant unique avec la dernière valeur temporelle pour chaque autre valeur d'identifiant distincte. Cette requête optimisée garantit la sortie souhaitée des identifiants d'enregistrement distincts 5, 4 et 2.

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