Mysql сгруппировать и имея с максимальным значением не вернуть фактическое максимальное значение

SELECT c.testid, t.testid, c.studyid, c.PRINCIPAL, t.buildnumber 
FROM comp_max c
INNER JOIN testlog t
ON t.testid = c.testid
WHERE t.buildnumber = 1030716
ORDER BY studyid ASC

и результат

testid  testid  studyid PRINCIPAL   buildnumber
403      403    1109    2670506       1030716
497      497    1109    2468736       1030716
**495        495    1109    2468736       1030716**
442      442    1109    2468736       1030716

поэтому я попытался запрос ниже, чтобы получить максимальный testid (495)

SELECT c.testid, t.testid, c.studyid, c.PRINCIPAL, t.buildnumber 
FROM comp_max c
INNER JOIN testlog t
ON t.testid = c.testid
WHERE t.buildnumber = 1030716
group by studyid having max(c.testid)

Но возвращаемое значение равно 403, а не 495

testid  testid  studyid PRINCIPAL   buildnumber
403      403    1109    2670506       1030716

таким образом, ожидаемый результат будет показателем 495. Не могли бы вы помочь мне разобраться в этой проблеме для меня? или какие-то намеки?

Спасибо

1 ответ

Я сам исправил проблему, используя подзапрос, вот ответ

SELECT c.studyid, c.testid, c.PRINCIPAL FROM comp_max c 
WHERE c.testid in (
   SELECT MAX(c.testid) FROM comp_max c
   INNER JOIN testlog t ON t.testid = c.testid
   WHERE c.studyid IN ( 
                    SELECT c.studyid FROM comp_max c 
                    INNER JOIN testlog t
                    ON t.testid = c.testid
                    WHERE t.buildnumber = 1030716 )
   AND t.buildnumber = 1030716
   GROUP  BY c.studyid )
GROUP BY studyid
ORDER BY c.studyid desc

Я более чем счастлив получить ваш ответ, если у вас есть лучшее решение. Спасибо

Другие вопросы по тегам