ORA-00907: 从数据中抽样时缺少右括号

ORA-00907:missing right parenthesis when taking sample from the data

我想通过 id(而不是数据点)从 Oracle 数据库中随机抽样。我的代码如下所示,但失败了。

select C.* from original_table C, 
(select * from (select id from original_table group by id) as A 
ORDER BY RAND() LIMIT 500) as B where C.id = B.id;

error message is ORA-00907:missing right parenthesis, highlighting the "as"s and the parenthesis "(select * " and "LIMIT 500) ".

两件事:

  • RAND() 不是 Oracle 函数。

您可以使用 dbms_random 包。

  • LIMIT 在 Oracle 中不受支持。

或者,您可以使用以下方法:

  1. 在 12c 上,您可以使用新的 Top-n row limiting 功能。
  2. 在 12c 之前的版本..