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

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

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

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

全部评论

相关推荐

点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务