Maison > base de données > tutoriel mysql > Comment obtenir le dernier PID pour chaque RID dans MySQL à l'aide de MAX() et GROUP BY ?

Comment obtenir le dernier PID pour chaque RID dans MySQL à l'aide de MAX() et GROUP BY ?

Mary-Kate Olsen
Libérer: 2024-12-30 02:02:09
original
548 Les gens l'ont consulté

How to Get the Latest PID for Each RID in MySQL Using MAX() and GROUP BY?

Requête MySQL : MAX() GROUP BY

Question :

Comment récupérer le PID de la dernière ligne pour chaque RID d'une table à l'aide d'une requête MySQL qui combine MAX() et GROUP BY ?

Exemple Données :

CREATE TABLE theTable (
    `pid` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `cost` INT UNSIGNED NOT NULL,
    `rid` INT NOT NULL,
) Engine=InnoDB;

INSERT INTO theTable (`pid`, `timestamp`, `cost`, `rid`)
VALUES
  (1, '2011-04-14 01:05:07', 1122, 1),
  (2, '2011-04-14 00:05:07', 2233, 1),
  (3, '2011-04-14 01:05:41', 4455, 2),
  (4, '2011-04-14 01:01:11', 5566, 2),
  (5, '2011-04-14 01:06:06', 345, 1),
  (6, '2011-04-13 22:06:06', 543, 2),
  (7, '2011-04-14 01:14:14', 5435, 3),
  (8, '2011-04-14 01:10:13', 6767, 3)
;
Copier après la connexion

Résultat souhaité :

pid | MAX(timestamp)      | rid
-----------------------------------
5   | 2011-04-14 01:06:06 | 1
3   | 2011-04-14 01:05:41 | 2
7   | 2011-04-14 01:14:14 | 3
Copier après la connexion

Requête incorrecte :

SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
Copier après la connexion

Cette requête renverrait le PID de la première occurrence de chaque RID, et non le last.

Requête correcte :

Pour récupérer le PID de la dernière ligne pour chaque RID, vous pouvez utiliser la requête suivante :

SELECT pid, MAX(timestamp) AS latest_timestamp, rid
FROM theTable
GROUP BY rid
HAVING latest_timestamp = MAX(timestamp)
Copier après la connexion

Cette requête utilise d'abord la clause GROUP BY pour regrouper les lignes par colonne RID. Il utilise ensuite la fonction MAX() pour calculer l'horodatage maximum pour chaque groupe de lignes. Enfin, il filtre les résultats à l'aide de la clause HAVING pour conserver uniquement les lignes avec le dernier horodatage pour chaque RID.

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