2010-11-07 7 views
0

Je suis en train de faire un SELECT avec une table qui pourrait contenir plusieurs valeurs avec le même id_type comme dans cet exemple:MySQL: groupe le plus haut résultat à jour avec le même id_type que

table_intensity 
id  id_type  value  user_id  creation_date 
1  1    90.4  73    2010-11-06 16:27:32 
2  4    1258  27    2010-11-06 16:27:48 <= up-to-date id_type 
3  3    1.9  73    2010-11-06 16:31:02 <= up-to-date id_type 
4  1    88.8  12    2010-11-06 16:33:11 
5  1    89.1  12    2010-11-06 16:58:20 <= up-to-date id_type 

Comment puis-je obtenir le plus à jour de chaque id_type? Je pensais que quelque chose comme ça mais le travail ne marche pas:

SELECT * FROM table_intensity GROUP BY id_type ORDER BY id_type, creation_date 

Ceci pour obtenir un résultat comme:

table_intensity 
id  id_type  value  user_id  creation_date 
2  4    1258  27    2010-11-06 16:27:48 
3  3    1.9  73    2010-11-06 16:31:02 
5  1    89.1  12    2010-11-06 16:58:20 
+0

Je devine que vous devez aussi ORDER BY creation_date – kalpaitch

Répondre

0

Si j'obtiens votre question correctement, cela pourrait fonctionner pour ce que vous voulez faire. Vous pouvez maintenant utiliser la colonne id si c'est le PK pour joindre au résultat de la requête ci-dessous.

SELECT * 
FROM table_intensity A 
INNER JOIN 
    (SELECT id_type, MAX(creation_date) FROM table_intensity GROUP BY id_type) b 
ON A.id_type = b.id_type 
AND A.creation_date = b.creation_date 
0

Je pense que vous voulez par groupe id plutôt que par id_type.

SELECT * FROM table_intensity GROUP BY id ORDER BY id_type, creation_date