例如,有一个表:
表: PATIENT_DETAIL
PATIENT_NAME(varchar),
DISEASE(varchar),
SICK_DEGREE(number),
START_TIME(date),
END_TIME(date)
表中有1000名患者,每名患者可能患有不同的疾病。有些患有疾病A,有些患有疾病B,有些患有疾病C.
现在我想为每位患有新疾病D的患者插入记录,但我希望他们有不同程度的疾病。数字可以介于1到1000之间。
我想这样做,但他们都有一定的程度:
INSERT INTO PATIENT_DETAIL
SELECT PATIENT_NAME,
'DISEASE D',
(select dbms_random.value(1,1000) num from dual),
sysdate,
sysdate
插入了1000行。
如果代码(从双重中选择dbms_random.value(1,1000)num)生成500,那么所有患者的疾病程度都为500,但我希望它们不同。
答案 0 :(得分:9)
您无需将dbms_random.value(1,1000)
放入子选择中。如果这样做,则首先执行子选择并将其应用于所有后续行。
INSERT INTO PATIENT_DETAIL
SELECT PATIENT_NAME,
'DISEASE D',
dbms_random.value(1,1000),
sysdate,
sysdate
FROM PATIENT_DETAIL