SELECT * FROM
(
SELECT exam_id tid,
    COUNT(DISTINCT uid) uv,
    COUNT(start_time) pv
FROM exam_record
GROUP BY tid
ORDER BY uv DESC, pv DESC
) m

UNION ALL

SELECT * FROM
(
SELECT question_id tid,
    COUNT(DISTINCT uid) uv,
    COUNT(score) pv
FROM practice_record
GROUP BY tid
ORDER BY uv DESC, pv DESC
) n

找每个题目和每份试卷被作答的人数和次数

两张表,试卷表和练习题表,要做的就是取这两张表的对应数据:试卷、练习题id;作答人数(记得去重);作答次数(指的是做了就算,不管有没有成绩)

看到对两张表同时取数,第一时间想到UNION (ALL),这个关键词将两个或多个查询竖着拼接在一起,stack。

不加all会自动去重,加就不去。

但是如果想要分别排序,单纯的这样还不够,因为不对查询加()的话,只能有一个排序语句,就不能分别排序。

所以要将这两个查询包装起来,才能独立排序。(难点和重点)