2013-04-04 31 views
6

Trong MySQL chúng tôi sử dụngOracle thay thế cho MySQL REPLACE VÀO

REPLACE INTO 

để chèn nếu liên tiếp không tồn tại và để cập nhật nếu nó tồn tại.

Có lệnh tương ứng trong Oracle không?

+1

Đừng sử dụng 'REPLACE INTO' trong MySQL, thay vì sử dụng' INSERT ... VỀ CẬP NHẬT KEY DUPLICATE '. – Quassnoi

+0

xem thêm http://stackoverflow.com/questions/237327/oracle-how-to-upsert-update-or-insert-into-a-table/2692441#2692441 – user123444555621

Trả lời

7
MERGE 
INTO destTable d 
USING (
     SELECT * 
     FROM sourceTable 
     ) s 
ON  (s.id = d.id) 
WHEN NOT MATCHED THEN 
INSERT (id, destCol1, destCol2) 
VALUES (id, sourceCol1, sourceCol2) 
WHEN MATCHED THEN 
UPDATE 
SET  destCol1 = sourceCol1, 
     destCol2 = sourceCol2 
+0

Tôi có thực sự cần một bảng khác để hợp nhất không? Hoặc là có một cách để bao gồm các dữ liệu trong lệnh? – user123444555621

+0

Để trả lời câu hỏi của riêng tôi, tôi đoán nó có thể được thực hiện bằng cách sử dụng 'dual': http://www.idevelopment.info/data/Oracle/DBA_tips/SQL/SQL_5.shtml – user123444555621

0

Bạn đang tìm kiếm cái gì đó như Merge trong Oracle

Sử dụng

Merge Into myTable s 
    USING Select x from y; 

See the documentation

Các vấn đề liên quan