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

时间:2012-01-04 09:55:42

标签: sql oracle oracle-sqldeveloper

例如,有一个表:

表: 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,但我希望它们不同。

1 个答案:

答案 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
相关问题