Comment sélectionner les deux derniers enregistrements pour chaque topic_id dans MySQL

J'ai pour sélectionner les deux derniers enregistrements pour chaque sujet.

ex:
tableau: msg

id  |  topic_id
------------
 1  |  1
 2  |  1
 3  |  1
 4  |  1
 5  |  2
 6  |  2
 7  |  2
 8  |  3
 9  |  3
10  |  3

Je veux obtenir ces lignes:

 3 1
 4 1
 6 2
 7 2
 9 3
10 3

Comment puis-je faire cela?

grâce

existe-il des raccourcis, on peut supposer? par exemple, dans les données ci-dessus votre id est croissant avec pas de trous et de l'ascendant id vous avez également croissant topic_id - si l'on peut supposer que ça va faire des requêtes plus facile. une autre approche pourrait utiliser l'hypothèse qu'il y a au moins deux entrées pour chaque topic_id. peut-on supposer que?

OriginalL'auteur Luca Romagnoli | 2010-04-07