Maison >base de données >tutoriel mysql >Comment sélectionner des lignes avec la date/heure maximale pour chaque maison dans MySQL ?
Dans MySQL, sélectionnez la ligne avec les valeurs maximales en fonction d'un autre groupe
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.).
<code class="language-sql">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 );</code>
Exemple de données
Les résultats attendus
<code class="language-sql">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) ;</code>
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>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).
<code class="language-sql">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;</code>
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.
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!