order by不能直接出现在union的子句中,但是可以出现在子句的子句中。

SELECT
    *
FROM
    (
        SELECT
            exam_id tid,
            count(DISTINCT uid) uv,
            count(*) pv
        FROM
            exam_record
        GROUP BY
            exam_id
        ORDER BY
            uv DESC,
            pv DESC
    ) t1
UNION ALL
    SELECT
        *
    FROM
        (
            SELECT
                question_id tid,
                count(DISTINCT uid) uv,
                count(*) pv
            FROM
                practice_record
            GROUP BY
                question_id
            ORDER BY
                uv DESC,
                pv DESC
        ) t2