SELECT employee_id a, job_id, department_id
FROM employees
UNION ALL
SELECT employee_id , job_id, department_id
FROM job_history
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history
ORDER BY a如上面例子,当两个select查询使用集合运算符时,可以使用别名排序,但三个select查询使用集合运算符时就无法使用别名进行排序,如果select中不使用别名,可以使用列名排序。如果有两个select使用相同别名就可以使用别名排序,请问是什么原因?最好能解答下集合查询时处理排序和别名的原理,谢谢!
FROM employees
UNION ALL
SELECT employee_id , job_id, department_id
FROM job_history
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history
ORDER BY a如上面例子,当两个select查询使用集合运算符时,可以使用别名排序,但三个select查询使用集合运算符时就无法使用别名进行排序,如果select中不使用别名,可以使用列名排序。如果有两个select使用相同别名就可以使用别名排序,请问是什么原因?最好能解答下集合查询时处理排序和别名的原理,谢谢!
不过,可以用下面语句:
with b as(
select 1 as a , 2 as job_id, 3 as dept_id from dual
union all
select 2 , 2 as job_id, 3 as dept_id from dual
union all
select 3 , 2 as job_id, 3 as dept_id from dual)
select * from b
order by b.a
而且多个SELECT进行union时,只要第一个和倒数第二个SELECT里使用相同别名,就可以使用别名排序,为什么呢?
不过谢谢楼上的。