2017-06-21 1 views
0

J'ai une table qui stocke des lignes avec certains champs étant l'identifiant, le nom, la date et la version. Je pourrais avoir deux lignes avec la même name mais une version différente, donc un fichier peut avoir plusieurs versions.MySQL ne ramène le dernier enregistrement

Ma requête:

SELECT id, name, date, version FROM my_table AS a 

Exemple de sortie (chaque nouvelle ligne est une autre ligne):

1 | abc.xls | 1488363249 | 1 
2 | example.xls | 1488363232 | 1 
3 | thirdfile.xls | 1488362312 | 1 
4 | thirdfile.xls | 1488363249 | 2 

Ce que je veux faire est seulement apporter de nouveau les éléments suivants:

1 | abc.xls | 1488363249 | 1 
2 | example.xls | 1488363232 | 1 
4 | thirdfile.xls | 1488363249 | 2 

Ce qui s'est passé a-t-il été remarqué que les id 3 et 4 étaient le même nom de fichier et qu'il ne ramenait que la version 2 car c'était la dernière de ce nom de fichier

Comment j'obtiendrais cela en une seule requête.

Répondre

1

Quelque chose comme cela devrait fonctionner

SELECT t.id, t.name, t.date, t.version 
FROM my_table t 
JOIN (SELECT max(version) max_version, name FROM my_table GROUP BY name) t1 
    ON t.version= t1.max_version AND t.name= t1.name