题解 | #每个题目和每份试卷被作答的人数和次数#

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

http://www.nowcoder.com/practice/203d0aed8928429a8978185d9a03babc

先上代码

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

会导致输出顺序混乱

一天一个Mysql 文章被收录于专栏

学习,一天一个mysql

全部评论
为什么select* 以后再用union顺序不会打乱?
点赞 回复 分享
发布于 2022-01-23 13:30

相关推荐

2025-11-07 14:38
已编辑
东华理工大学 Java
糠茹频频影:寒假实习hc还是有的,继续投吧,至少1000+沟通以上
Java求职圈
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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