题解 | #浙江大学用户题目回答情况#

浙江大学用户题目回答情况

https://www.nowcoder.com/practice/55f3d94c3f4d47b69833b335867c06c1

# 可以用简单的等值连接来查询解决此题的多表情况
SELECT q.device_id, question_id, result
FROM question_practice_detail q, user_profile u
WHERE q.device_id = u.device_id 
      AND u.university = '浙江大学';


# id=id 都是主键 不可以
# elect a.device_id,	question_id,result
# from question_practice_detail a, user_profile b
# where a.id=b.id and university='浙江大学';

# :创建一张临时表用,获取浙江大学device_id对用户题目回答明细进行过滤。

SELECT device_id, question_id, result
FROM   question_practice_detail
WHERE  device_id IN
	   ( SELECT device_id
         FROM user_profile
         WHERE university = '浙江大学'
       );
#  法三
SELECT q.device_id, question_id, result
FROM   question_practice_detail q
left JOIN   user_profile u
ON     q.device_id = u.device_id 
WHERE  u.university = '浙江大学';
#方法中,为何用了left join,而不直接采用join 呢。left join不是要保留主表中的所有吗
# 因为是要取浙江大学里的同学,的答题情况。这种情况下通常会考虑到万一有同学没有答题的异常情况,所以应该以同学信息表为主表。如果用INNER JOIN,会弃掉没有答题的同学的信息。






着重看一下这三种不同的实现方法

SQL错题 文章被收录于专栏

每天学习一遍 刷题刷题 越刷越强!

全部评论

相关推荐

10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
鼗:四级有点难绷,感觉能拿国家励志奖学金,学习能力应该蛮强的,四级确实不重要,但是拿这个卡你可是很恶心啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务