为了账号安全,请及时绑定邮箱和手机立即绑定

where b.user_id = c.user_id

select a.user_name,b.timestr,b.kills from user1 as a left join user_kills as b on a.id = b.user_id

where b.kills = (select max(c.kills) from user_kills as c where b.user_id = c.user_id);


为什么 b,c 表 user_id 一样的,加了和不加结果会不一样

正在回答

2 回答

加了where b.user_id = c.user_id这个条件,max(c.kills)是可变的(会求出3个userid的各个的最大值,然后去外面卡where条件),不加,这个值是固定的(是这些userid里最大的一个值,无意义)。

1 回复 有任何疑惑可以回复我~
#1

破裂人偶 提问者

非常感谢!
2018-07-18 回复 有任何疑惑可以回复我~

where b.kills = (select max(c.kills) from user_kills as c where b.user_id = c.user_id);括号外的where b.kills 依次取数,但是只要满足括号内where b.user_id = c.user_id,即把同类ID最大的kills返回,相当于有一个分组条件;若不加上的话,只返回kills中最大的值,这个值是唯一的

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

where b.user_id = c.user_id

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信