UNION ALL 的排序问题

时间:2025-03-04 10:44:28

我们都知道当几个数据集你能确保没有交集时,用UNION ALL能够达到最好的性能效果,但是效果好的代价就是它并不会帮你排序,这就涉及到UNION ALL的一个排序问题。举个例子:

1. CREATE TABLE a ( ID NUMBER,m_name VARCHAR2(10));

2. CREATE TABLE b ( ID NUMBER,m_name VARCHAR2(10));

3. SELECT * FROM a

5   a
4   c

9  b

     SELECT * FROM b

p
1 i
8 e

4.现在我是想仅对第二个sql的id列进行排序,然后再与第一个sql进行UNION ALL,就需要这么写:

SELECT ,a.m_name
  FROM a
UNION ALL
SELECT ID,m_name FROM
(SELECT ,b.m_name
  FROM b
ORDER BY ID) c