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

source:php.cn
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