先上代码
SELECT
*
FROM(
SELECT
e.exam_id tid,
count(distinct e.uid) uv,
count(e.start_time) pv
FROM
exam_record e
GROUP BY
e.exam_id
ORDER BY
uv DESC,pv DESC
) exa
UNION ALL
SELECT
*
FROM(
SELECT
question_id tid,
count(distinct p.uid) uv,
count(submit_time) pv
FROM
practice_record p
GROUP BY
question_id
ORDER BY
uv DESC,pv DESC
) que
不知道是不是我做的题越来越简单还是我越来越强?总之现在的题没啥说的。
这道题还有的说的话就是执行顺序
语法:
select 查询列表 ⑦
from 表1 别名 ①
连接类型 join 表2 ②
on 连接条件 ③
where 筛选 ④
group by 分组列表 ⑤
having 筛选 ⑥
order by排序列表 ⑧
union 联合两表 ⑨
limit 起始条目索引,条目数; ⑩
也就是说这样union就会报错
SELECT
e.exam_id tid,
count(distinct e.uid) uv,
count(e.start_time) pv
FROM
exam_record e
GROUP BY
e.exam_id
ORDER BY
uv DESC,pv DESC
UNION ALL
SELECT
question_id tid,
count(distinct p.uid) uv,
count(submit_time) pv
FROM
practice_record p
GROUP BY
question_id
ORDER BY
uv DESC,pv DESC
而这样
SELECT
e.exam_id tid,
count(distinct e.uid) uv,
count(e.start_time) pv
FROM
exam_record e
GROUP BY
e.exam_id
UNION ALL
SELECT
question_id tid,
count(distinct p.uid) uv,
count(submit_time) pv
FROM
practice_record p
GROUP BY
question_id
ORDER BY
uv DESC,pv DESC
会导致输出顺序混乱