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

Chuyển đổi Chọn truy vấn Oracle thành Bản cập nhật cho trường hợp cụ thể

Một cách tuyệt vời để cập nhật bảng từ truy vấn là sử dụng câu lệnh MERGE. Đây là một ví dụ sao chép all_objects và thêm một cột số lượng đối tượng phù hợp với chủ sở hữu và loại hàng đó.

CREATE TABLE all_objects_2 AS
SELECT *
  FROM all_objects;

ALTER TABLE all_objects_2 add owner_and_type_ct NUMBER;

MERGE INTO all_objects_2 ao2
USING (SELECT ao.owner,
              ao.object_type,
              COUNT(*) AS ct
         FROM all_objects ao
        GROUP BY ao.owner,
                 ao.object_type) x
ON (ao2.owner = x.owner AND ao2.object_type = x.object_type)
WHEN MATCHED THEN
  UPDATE
     SET ao2.owner_and_type_ct = x.ct;

SELECT ao2.owner,
       ao2.object_name,
       ao2.object_type,
       ao2.owner_and_type_ct
  FROM all_objects_2 ao2
 WHERE rownum < 10;
/*
SYS C_TS# CLUSTER 10
SYS I_TS# INDEX 1459
SYS C_FILE#_BLOCK#  CLUSTER 10
SYS I_FILE#_BLOCK#  INDEX 1459
SYS FET$  TABLE 1592
SYS UET$  TABLE 1592
SYS SEG$  TABLE 1592
SYS UNDO$ TABLE 1592
SYS TS$ TABLE 1592
*/

Bạn KẾT HỢP VÀO [bảng đích] SỬ DỤNG [truy vấn của bạn] BẬT [tiêu chí để tham gia truy vấn đến đích] và KHI bạn KẾT HỢP một hàng, bạn CẬP NHẬT hàng với các giá trị từ truy vấn. Bạn cũng có thể CHÈN và XÓA bằng MERGE, nhưng tôi sẽ không sao chép tất cả tài liệu .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL * Plus:Buộc nó trả về mã lỗi

  2. Nhà cung cấp không tương thích với phiên bản máy khách Oracle

  3. Làm cách nào để sử dụng FOR UPDATE với một JOIN trên Oracle?

  4. Thiết kế báo cáo bụi trong nhật thực với bộ lọc báo cáo con

  5. Gọi một truy vấn Oracle được tham số hóa từ ADODB trong ASP Cổ điển