where 带条件,然后group返回的max怎么不准确呢?

我预期想要的是 id=2的行,他的join是最大,条件是status=0,

结果他返回的是id=1的行。他的join是2,不是最大的。最大的实际是id=2的join。

INSERT INTO likeshopv2.demo (id, status, join1, team_id, need) VALUES (1, 0, 2, 10, 5);
INSERT INTO likeshopv2.demo (id, status, join1, team_id, need) VALUES (2, 0, 3, 10, 5);
INSERT INTO likeshopv2.demo (id, status, join1, team_id, need) VALUES (3, 1, 2, 11, 3);

阅读 1.4k
1 个回答

严格模式下,你的语句用法会报错,sql_mode去掉了ONLY_FULL_GROUP_BY

这种用法,语义不明确,MySQL可返回任意行

可使用连表查询完成功能

SELECT a.*
FROM `demo` a
LEFT JOIN (
    SELECT MAX(`join1`) AS `join1`, `team_id`
    FROM `demo`
    WHERE `status`=0
    GROUP BY `team_id`
) b ON 1
WHERE a.`status`=0
AND a.`join1`=b.`join1` 
AND a.`team_id`=b.`team_id`;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题