0

我正在尝试在 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 item must be the number of a SELECT-list expression。当我删除第二张桌子时,它工作得很好。但是,现在我需要从两个表中随机选择,首先将它们合并,随机排序,然后选择其中的 5000 个。

或者也许有其他方法具有相同的结果?

寻求帮助。

4

1 回答 1

3

您的 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
于 2013-04-18T08:27:05.103 回答