0

同じ列を持つ2つの異なるテーブルの結合から5000レコードをランダムに選択するSQLステートメントをOracle 11gで作成しようとしています:

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 というエラーが発生します。2 番目のテーブルを削除すると、問題なく動作します。しかし、ここでは 2 つのテーブルからランダムに選択する必要があります。最初にすべてのテーブルを結合し、ランダムに並べ替えてから 5000 個を選択します。

それとも、同じ結果をもたらす他のアプローチがありますか?

Tnx が助けてくれました。

4

1 に答える 1

3

ORDER BY は、UNION ALL の 2 番目の部分にのみ適用されます。最初に 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 に答える