Mysql group by 和 having with max 值不返回实际最大值

标签 mysql group-by having

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/

相关文章:

mysql - 如何使用mysql中的find_in_set()函数来过滤数据?

MySQL存储过程用于更新两个表(第二个表从第一个表开始自动递增值)

mySQL >> 在逗号分隔的字段中查找最常用的词

python - groupby 多个值列

sql - PostgreSQL:如何选择非聚合列?

sql - Postgresql 查询不识别列

python - 将外键更改为另一个模型

mysql - 稍微更改了 MYSQL 数据库表,需要此查询像以前一样工作

python - 在数据框中使用数据透视/聚合

MySQL HAVING 和 WHERE 查询不同结果