【问题标题】:ORA-00907:missing right parenthesis when taking sample from the data [duplicate]ORA-00907:从数据中抽取样本时缺少右括号 [重复]
【发布时间】:2015-09-17 09:13:48
【问题描述】:

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

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;

错误消息是 ORA-00907:缺少右括号,突出显示 "as"s 和括号 "(select * " 和 "LIMIT 500) "。

【问题讨论】:

  • 我认为 LIMIT 500 不是有效的 Oracle 数据库语法。

标签: sql oracle random-sample


【解决方案1】:

两件事:

  • RAND() 不是 Oracle 函数。

您可以使用 dbms_random 包。

  • LIMIT 在 Oracle 中不受支持。

或者,您可以使用以下内容:

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

【讨论】:

    猜你喜欢
    • 2018-05-23
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多