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
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 .