Oracle SQL - генерировать и обновлять столбец с разными случайными числами в каждой строке - PullRequest
2 голосов
/ 06 января 2012

Нужна помощь с SQL - я хочу создать и обновить столбец в каждой строке с другим случайным числом.

База данных # Oracle 10g.

Пример - Когда я делаю что-то подобноеон обновляет все строки с одинаковым номером

update mytable r 
set r.generated_num = 
(select floor(dbms_random.value(100,9999999)) from dual).

Любой совет?

Ответы [ 2 ]

9 голосов
/ 06 января 2012

Похоже, проблема в подзапросе.

Кажется, это работает-

update mytable r set r.generated_num = TRUNC(dbms_random.value(1,9999999))
0 голосов
/ 07 января 2012

Если вам действительно нужно отдельное случайное число, вам нужно будет сгенерировать много, гораздо больше чисел, чем строк.

Обратите внимание на следующий запрос:

with generator as
(select /*+ materialize */ rownum rn from dba_objects where rownum <= 250)
select count(distinct rv), count(rv) from
(
select trunc(dbms_random.value(1,9999999)) as rv
  from generator v1
       cross join generator v2
       cross join generator v3
 where rownum <= 10000000
)

Некоторые примеры казней:

COUNT(DISTINCTRV)  COUNT(RV)
----------------- ----------
          6321429   10000000
          6321827   10000000
          6321941   10000000
          6321507   10000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...