破裂人偶
2018-07-06 16:24
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 一样的,加了和不加结果会不一样
加了where b.user_id = c.user_id这个条件,max(c.kills)是可变的(会求出3个userid的各个的最大值,然后去外面卡where条件),不加,这个值是固定的(是这些userid里最大的一个值,无意义)。
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中最大的值,这个值是唯一的
MySQL开发技巧(一)
148779 学习 · 123 问题
相似问题