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

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

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错题 文章被收录于专栏

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
11-01 08:48
门头沟学院 C++
伤心的候选人在吵架:佬你不要的,能不能拿户口本证明过户给我。。球球了
点赞 评论 收藏
分享
有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务