Как я могу повторить этот запрос 100 раз? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть этот запрос для генерации случайного числа из одной таблицы

выберите DBMS_RANDOM.value в качестве val от c4_trt где rownum = 1;

Теперь я хочу сгенерировать 100 случайных чисел из этой таблицы.

Обратите внимание: я хочу сгенерировать случайное число из этой конкретной таблицы, а не из двойной. Но я не уверен, что смогу сгенерировать случайное число из определенной таблицы.

Спасибо всем!

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Вы указали в своем вопросе, что НЕ хотите видеть решение, использующее таблицу двойных пустышек Oracle. Если в вашей таблице уже нет 100+ записей в таблице, из которой вы выбираете, я в настоящее время не вижу способа получить 100 записей, показывающих случайные числа, если вы не используете Connect By Level.

Ниже я предоставил ДВА ответа, которые дадут вам 100 случайных чисел в 100 строках вывода. В первом примере используется двойная таблица и Connect By Level с использованием LEVEL для ограничения строк CONNECT BY LEVEL <= 100. ВТОРОЙ пример использует rownum и ограничивает строки, используя rownum <= 100.

Using the dual table

SELECT LEVEL, floor(dbms_random.value(1,11)) AS rand_num /* Returns random numbers 1 thru 10 */
FROM dual
CONNECT BY LEVEL <= 100
;

Using any other table В этом примере используется словарное представление Oracles all_objects, поскольку оно возвращает более 100 строк, поэтому я решил поработать с этим, но знаю, что в этом примере будет работать любая таблица / представление, которая возвращает более 100 строк.

SELECT floor(dbms_random.value(1,11)) AS rand_num, /* Returns random numbers 1 thru 10 */
       rownum as at_row_num
FROM all_objects
WHERE rownum <= 100
;

На рисунке ниже показано, как выглядит результат при использовании примера с двумя таблицами.

enter image description here

1 голос
/ 26 марта 2019

Не знаю, зачем вам это нужно или хотите, но это сработает, если в вашей таблице будет не менее 100 строк, и это только для того, чтобы радовать rownum.Таблица, которую вы используете, не имеет значения.

select DBMS_RANDOM.value as val from c4_trt where rownum =< 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...