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 .