Maison > base de données > tutoriel mysql > Comment sélectionner des lignes avec la date/heure maximale pour chaque maison dans MySQL ?

Comment sélectionner des lignes avec la date/heure maximale pour chaque maison dans MySQL ?

Mary-Kate Olsen
Libérer: 2025-01-25 06:18:09
original
992 Les gens l'ont consulté

How to Select Rows with the Maximum Datetime for Each Home in MySQL?

Dans MySQL, sélectionnez la ligne avec les valeurs maximales en fonction d'un autre groupe

Instruction de questions

Considérez le tableau des performances du joueur suivant:

L'objectif est de récupérer les lignes de chaque colonne de maison différente et de considérer la valeur maximale de chaque maison. De plus, les résultats doivent inclure d'autres colonnes (joueur, etc.).
CREATE TABLE TopTen (
  id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  home INT UNSIGNED NOT NULL,
  `datetime` DATETIME NOT NULL,
  player VARCHAR(6) NOT NULL,
  resource INT NOT NULL
);
Copier après la connexion

<示> Exemple de données

<期> Les résultats attendus

INSERT INTO TopTen
  (id, home, `datetime`, player, resource)
VALUES
  (1, 10, '2009-04-03', 'john', 399),
  (2, 11, '2009-04-03', 'juliet', 244),
  (5, 12, '2009-04-03', 'borat', 555),
  (3, 10, '2009-03-03', 'john', 300),
  (4, 11, '2009-03-03', 'juliet', 200),
  (6, 12, '2009-03-03', 'borat', 500),
  (7, 13, '2008-12-24', 'borat', 600),
  (8, 13, '2009-01-01', 'borat', 700)
;
Copier après la connexion

<决> Solution

<code>id  home    datetime       player  resource
1   10     2009-04-03     john    399
2   11     2009-04-03     juliet  244
5   12     2009-04-03     borat   555
8   13     2009-01-01     borat   700</code>
Copier après la connexion
La requête suivante fournit les résultats requis:

Cette requête exécute les étapes suivantes:

Il sélectionne toutes les colonnes dans la table de topten (alias TT).
SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime;
Copier après la connexion

Il combine TT et sous-femerie (alias Groupttt) avec une connexion interne, et la récupération de la sous-femerie pour récupérer la valeur maximale de chaque valeur de maison différente.

    Les conditions de connexion garantissent la correspondance de la valeur à domicile et à DoteTime dans les deux tables.
  1. Le résultat contient toutes les colonnes de la table Topten.
  2. Remarque: J'ai révisé le format de date afin qu'il réponde au format standard
  3. pour s'assurer que MySQL peut être correctement analysé. Cela ne modifiera pas la logique de la requête, mais assurera uniquement l'exactitude des données.

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