2012-01-04 78 views
3

例如,有一個表:如何插入基於舊記錄的新記錄並使它們不同?

表: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

爲什麼你在每個元組中都有patient_name,而不是patient_id? – 2012-01-04 10:15:48

回答

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 
+0

謝謝!我複製了一個網站的代碼,教會如何在oracle中創建隨機數。 – lamwaiman1988 2012-01-05 01:45:50

相關問題