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 testid,不是495
testid testid studyid PRINCIPAL buildnumber
403 403 1109 2670506 1030716
因此预期结果将是 testid 495。有人能帮我解决这个问题吗?或任何提示?
谢谢
最佳答案
我自己使用子查询解决了问题 这是答案
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
如果您有更好的解决方案,我非常乐意得到您的答复 谢谢
关于Mysql group by 和 having with max 值不返回实际最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107464/