我正在尝试在oracle 11g中编写sql语句,该语句将从具有相同列的两个不同表的联合中随机选择5000条记录:
select *
from (
select ename, job
from emp1
union all
select ename, job
from emp2
order by dbms_random.value()
)
where rownum <= 5000
运行时,我收到错误ORA-01785:ORDER BY项必须是SELECT列表表达式的编号。 当我删除第二个表时它工作得很好。但是,现在我需要从两个表中随机选择,首先将它们联合起来,随机排序然后选择其中的5000个。
或者也许有其他方法有相同的结果?
Tnx寻求帮助。
答案 0 :(得分:2)
您的ORDER BY仅适用于UNION ALL的第二部分 - 您必须首先执行UNION ALL,然后应用ORDER BY:
select *
from (
select * from (
select ename, job
from emp1
union all
select ename, job
from emp2
)
order by dbms_random.value()
)
where rownum <= 5000