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

那位大神给讲解一下语句的执行流程

select a.user_name , b.timestr , b.kills
from user1 a
join user_kills b on a.id = b.user_id
join user_kills c on c.user_id = b.user_id
group by a.user_name , b.timestr , b.kills
having b.kills = MAX(c.kills)

正在回答

3 回答

(user1 a
join user_kills b on a.id = b.user_id
join user_kills c on c.user_id = b.user_id
group by a.user_name , b.timestr , b.kills
having b.kills = MAX(c.kills))相当于虚拟了一个表,

然后(select a.user_name , b.timestr , b.kills from )是从这个虚拟表中挑选的。

对于上面的虚拟表 先用两个join把三个表关联起来,group是对这个虚拟表的数据的排序,having 字句是减小范围用的。

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

薛cf 提问者

非常感谢!
2017-05-31 回复 有任何疑惑可以回复我~

哪位大神知道MAX(c.kills)的值是怎么来的吗?

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

第一步 三张表join, 

第二步: group分组

第三步: hiving对分组后的结果进行筛选


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

举报

0/150
提交
取消

那位大神给讲解一下语句的执行流程

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