按级别更新连接请检查我哪里做错了

update connect by level please check where i am doing wrong

我有一个 table 的 Rand_No 我想像这样更新

UPDATE 
   RAND_NO 
SET 
rand_no1 = select floor(dbms_random.value(30, 35)) result
  from dual
  connect by level <= 366
/

我想在 (30, 35) 之间随机输入数据,直到 366 个条目 刚插入的时候是这样的

insert into rand_no (RAND_NO1)
  select round(dbms_random.value(30, 35)) result
  from dual
  connect by level <= 366
;

但不更新我知道做错了请指正

您的更新语句将得到:

ORA-00936: missing expression

如果您想从子查询更新列值,则必须将其括在括号中:

UPDATE 
   RAND_NO 
SET 
rand_no1 = (select floor(dbms_random.value(30, 35)) result
  from dual
  connect by level <= 366)
/

但是作为那个子查询returns 366行会得到

ORA-01427: single-row subquery returns more than one row

您不能将每行中的值设置为所有 366 个新的随机数,这是试图做到的。

如果您想将每个现有行更新为新的随机值,那么您可以这样做:

update rand_no
set rand_no1 = floor(dbms_random.value(30, 35));

db<>fiddle