因为涉及到SQL优化的问题, 所以具体列出来
方法一: 先用user_profile连接question_practice_detail然后再where进行过滤, 最后排序即可
select up.device_id, qpd.question_id, qpd.result from user_profile up left join question_practice_detail qpd on up.device_id=qpd.device_id where university='浙江大学' order by qpd.question_id asc
方法二: 先用where对表一进行过滤, 然后在连接question_practice_detail进行查询
select t1.device_id, qpd.question_id, qpd.result from ( select up.device_id from user_profile up where up.university='浙江大学' ) t1 left join question_practice_detail qpd on t1.device_id=qpd.device_id order by qpd.question_id asc两种方法在执行层面上, 方法一先join, 在过滤查询, 当表一数据量大时, 查询效率会很慢;
方法二先降低表1的数据量, 再进行关联, 效率提升较大
但是注意: mysql自带的优化器会对方法一进行优化, 哪怕是按方法一提交的代码, 优化器也会先对表1过滤再关联查询.