sql union all排序问题

SELECT * FROM (
(SELECT rp1.id FROM rb_problem rp1 WHERE rp1.tsid="29017546" AND rp1.facilityOrderNum="Y2017032800024" ORDER BY rp1.id DESC)
UNION ALL
(SELECT rp2.id FROM rb_problem rp2 WHERE rp2.tsid="29017546" AND (rp2.facilityOrderNum IS NULL OR rp2.facilityOrderNum<>"Y2017032800024") ORDER BY rp2.id DESC)
) aa
这两个sql分开查询时sql1的结果为32,30,sql2的结果为31,但是当用union all拼接起来时为何结果就变成30,32,31了,我的子查询语句的排序完全没有作用了

排序要放到 aa 后面。
里面的排序对最终结果不起作用(有的数据库对这样的写法会直接报错)。

但是我的期望是子查询排序,我期望的结果是32,30,31,如果放在aa的后边,实现不了吧