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.
В качестве альтернативы вы можете использовать следующее:
- На 12c вы можете использовать новую функцию ограничения строк Top-n.
- ROWNUM в версии до 12c..