如何根据旧记录插入新记录并使它们不同?

lam*_*988 3 sql oracle oracle-sqldeveloper

例如,有一个表:

表: PATIENT_DETAIL

PATIENT_NAME(varchar), 
DISEASE(varchar), 
SICK_DEGREE(number), 
START_TIME(date), 
END_TIME(date)
Run Code Online (Sandbox Code Playgroud)

表中有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
Run Code Online (Sandbox Code Playgroud)

插入1000行.

如果代码(从双重中选择dbms_random.value(1,1000)num)生成500,那么所有患者的疾病程度将为500,但我希望它们不同.

Ste*_*ieG 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
Run Code Online (Sandbox Code Playgroud)