2009-12-27 3 views
0

Disons que j'ai une table avec des données comme les suivantes:Sélectionnez l'entrée la plus récente en fonction d'autres entrées ayant les mêmes valeurs?

ID  text  OtherID 
_______________________ 
6  text1  24 
7  text2  24 
8  text3  24 
9  text1  25 
10 text2  25 

Comme vous pouvez le voir, j'ai plusieurs entrées avec le même OtherID. ce qui serait une instruction sql qui ne sélectionnerait que l'identifiant le plus récent parmi toutes les entrées ayant le même identifiant. ceci est fait en MySQL si cela compte.

par exemple, je veux à la sortie:

ID  text  OtherID 
_______________________ 
8  text3  24 
10  text2  25 

Répondre

3

Utilisation:

SELECT DISTINCT 
     x.id, 
     x.text, 
     x.otherid 
    FROM TABLE x 
    JOIN (SELECT t.otherid, 
       MAX(t.id) 'max_id' 
      FROM TABLE t 
     GROUP BY t.otherid) y ON y.otherid = x.otherid 
          AND y.max_id = x.id 
+0

Merci, cela a fonctionné. – smont

1

Si vous voulez seulement le plus récent id (suggéré par votre question, mais pas l'exemple), il suffit d'utiliser

SELECT OtherID, MAX(ID) FROM table GROUP BY OtherID 

mais si vous voulez d'autres colonnes, puis OMG Ponies' answer est ce que vous voulez. Cela est dû au fait que la sélection des autres colonnes (telles que du texte) n'est pas garantie pour renvoyer des valeurs correspondant à la même ligne que l'ID renvoyé par MAX (ID).

Questions connexes