Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Truy vấn cập nhật Oracle SQL mất nhiều ngày để cập nhật

Bạn có thể thử cái này

  1  MERGE
  2     INTO  target_table tgt
  3     USING source_table src
  4     ON  ( src.object_id = tgt.object_id )
  5  WHEN MATCHED
  6  THEN
  7     UPDATE
  8     SET   tgt.object_name = src.object_name
  9     ,     tgt.object_type = src.object_type
 10  WHEN NOT MATCHED
 11  THEN
 12     INSERT ( tgt.object_id
 13            , tgt.object_name
 14            , tgt.object_type )
 15     VALUES ( src.object_id
 16            , src.object_name
 17            , src.object_type );

Cú pháp thoạt nhìn có vẻ hơi khó khăn nhưng nếu chúng ta đọc từ trên xuống dưới thì sẽ thấy nó khá trực quan. Lưu ý các điều khoản sau:

• MERGE (dòng 1):như đã nêu trước đây, đây là câu lệnh DML thứ 4 trong Oracle. Bất kỳ gợi ý nào mà chúng tôi có thể muốn thêm trực tiếp theo từ khóa này (tức là MERGE / * + HINT * /);

• INTO (dòng 2):đây là cách chúng tôi chỉ định mục tiêu cho MERGE. Đích phải là một bảng hoặc một chế độ xem có thể cập nhật (không thể sử dụng chế độ xem trong dòng ở đây);

• USING (dòng 3):mệnh đề USING đại diện cho tập dữ liệu nguồn cho MERGE. Đây có thể là một bảng duy nhất (như trong ví dụ của chúng tôi) hoặc một chế độ xem trong dòng;

• ON () (dòng 4):mệnh đề ON là nơi chúng ta cung cấp phép nối giữa tập dữ liệu nguồn và bảng đích. Lưu ý rằng các điều kiện kết hợp phải nằm trong dấu ngoặc đơn;

• WHEN MATCHED (dòng 5):mệnh đề này là nơi chúng tôi hướng dẫn Oracle phải làm gì khi chúng tôi đã có một bản ghi phù hợp trong bảng đích (tức là có một kết nối giữa tập dữ liệu nguồn và đích). Chúng tôi rõ ràng muốn CẬP NHẬT trong trường hợp này. Một trong những hạn chế của điều khoản này là chúng ta không thể cập nhật bất kỳ cột nào được sử dụng trong mệnh đề BẬT (mặc dù tất nhiên chúng ta không cần phải làm như vậy vì chúng đã khớp). Bất kỳ nỗ lực nào để bao gồm một cột tham gia sẽ tạo ra một ngoại lệ không hợp lệ không trực quan; và

• KHI KHÔNG ĐƯỢC KẾT HỢP (dòng 10):điều khoản này là nơi chúng tôi CHÈN các bản ghi mà không có kết quả phù hợp hiện tại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C # gọi hàm lưu trữ oracle

  2. Nhận thời gian thực thi của script sql trong oracle sqlplus

  3. Tính khoảng cách giữa hai điểm vĩ độ trong Oracle

  4. Xoay / xoay bảng với tổng hợp trong Oracle

  5. Giá trị trình tự Oracle không được sắp xếp