※ 引述《kazumi6533 (patrick)》之銘言:
: 請問一下
: 如果我有一筆資料要insert,但是不知道是不是會有重覆
: 如果重覆的話就用update,那我應該怎麼做
: 是不是只能先select一個recordset,然後檢查recordset裡面是不是有該筆
: 然後再決定要不要insert或update?
: 如果是這樣我應該怎麼做比較好,因為我資料很多,大概一百萬筆左右
: 如果每一筆都這樣檢查是不是會變得很慢...orz..
: 謝謝
若是 Oracle,可以用 MERGE 指令,簡單又迅速。早一點的版本是叫作 UPSERT,
基本上就是 update 加 insert,也可以再加上 delete。
範例:
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id
FROM employees WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
DELETE WHERE (S.salary > 8000)
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus) VALUES
(S.employee_id, S.salary*.01) WHERE (S.salary <= 8000);
這個例子是給薪水小於八千的員工,每人薪水的百分之一當做 bonus。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 64.9.235.13