
Considérez un scénario dans lequel vous disposez d'une table MySQL avec des colonnes telles que l'horodatage, le coût, le débarras, etc. . Votre objectif est de récupérer le pid de la dernière ligne pour chaque débarras unique.
Vous avez tenté cela en utilisant ce qui suit. requête :
SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
Cependant, les valeurs pid renvoyées n'étaient pas alignées sur les horodatages maximum. En effet, GROUP BY considère toutes les colonnes de la clause SELECT et sélectionne la première ligne correspondante pour chaque groupe.
Pour remédier à cela, nous devons identifier le débarras et l'horodatage maximum pour chaque groupe. Nous pouvons le faire en utilisant une sous-requête :
SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid
Le résultat de cette requête ressemblera à ceci :
rid | ts -----|----- 1 | 2011-04-14 01:06:06 2 | 2011-04-14 01:05:41 3 | 2011-04-14 01:14:14
Maintenant, nous pouvons joindre la table d'origine avec cette sous-requête, en utilisant rid et l'horodatage, pour récupérer les valeurs pid souhaitées :
SELECT theTable.pid, theTable.cost, theTable.timestamp, theTable.rid
FROM theTable
INNER JOIN
(
SELECT rid, MAX(timestamp) AS ts
FROM theTable
GROUP BY rid
) AS maxt
ON (theTable.rid = maxt.rid AND theTable.timestamp = maxt.ts)Le résultat de cette requête vous fournira le pid, le coût, l'horodatage et débarrassé de la dernière ligne pour chaque débarras unique.
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!
Le numéro de page Word commence à partir de la troisième page comme 1 tutoriel
Trois méthodes d'encodage couramment utilisées
Utilisation de la fonction accepter
Quels sont les moteurs de workflow Java ?
Comment lier des données dans une liste déroulante
Que sont les logiciels de programmation en langage C ?
Qu'est-ce que CONNECTION_REFUSED ?
Comment résoudre 400 mauvaises requêtes