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
Я более чем счастлив получить ваш ответ, если у вас есть лучшее решение. Спасибо