ORA-00907: отсутствует правая скобка при отборе пробы из данных

Я хочу взять случайную выборку 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;

сообщение об ошибке ORA-00907: отсутствует правая круглая скобка с выделением "as" и круглых скобок (выберите * "и"LIMIT 500) ".

1 ответ

Решение

Две вещи:

  • RAND () не является функцией Oracle.

Вы можете использовать пакет dbms_random.

  • LIMIT не поддерживается в Oracle.

В качестве альтернативы вы можете использовать следующее:

  1. На 12c вы можете использовать новую функцию ограничения строк Top-n.
  2. ROWNUM в версии до 12c..
Другие вопросы по тегам