Obtenez MAX () sur les ID récurrents

Voici à quoi ressemblent les résultats de mes searchs. Comment puis-je get la valeur MAX () pour chaque identifiant unique?

C'EST À DIRE,

for 5267139 is 8. for 5267145 is 4 5267136 5 5267137 8 5267137 2 5267139 8 5267139 5 5267139 3 5267141 4 5267141 3 5267145 4 5267145 3 5267146 1 5267147 2 5267152 3 5267153 3 5267155 8 SELECT DISTINCT st.ScoreID, st.ScoreTrackingTypeID FROM ScoreTrackingType stt LEFT JOIN ScoreTracking st ON stt.ScoreTrackingTypeID = st.ScoreTrackingTypeID ORDER BY st.ScoreID, st.ScoreTrackingTypeID DESC 

Résultats

GROUP BY partitionnera votre table en blocs séparés en fonction des colonnes que vous spécifiez. Vous pouvez ensuite appliquer une fonction d'agrégat ( MAX dans ce cas) à chacun des blocs – ce comportement s'applique par défaut avec la syntaxe ci-dessous:

 SELECT First_column, MAX(Second_column) AS Max_second_column FROM Table GROUP BY First_column 

EDIT: Basé sur la requête ci-dessus, il semble que vous n'avez pas vraiment besoin de la table ScoreTrackingType , mais en la laissant en place, vous pouvez utiliser:

 SELECT st.ScoreID, MAX(st.ScoreTrackingTypeID) AS ScoreTrackingTypeID FROM ScoreTrackingType stt LEFT JOIN ScoreTracking st ON stt.ScoreTrackingTypeID = st.ScoreTrackingTypeID GROUP BY st.ScoreID ORDER BY st.ScoreID 

Le GROUP BY évite le besoin de DISTINCT , MAX vous donnera la valeur que vous searchz, et le ORDER BY s'appliquera toujours, mais comme il n'y aura qu'une seule valeur ScoreTrackingTypeID pour chaque ScoreID vous pouvez le retirer de la command .