题解 | #浙江大学用户题目回答情况#
浙江大学用户题目回答情况
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错题 文章被收录于专栏
每天学习一遍 刷题刷题 越刷越强!