Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Convert Select Oracle Query To Update untuk skenario tertentu

Cara yang bagus untuk memperbarui tabel dari kueri adalah dengan menggunakan pernyataan MERGE. Berikut adalah contoh yang menyalin all_objects dan menambahkan kolom jumlah objek yang cocok dengan pemilik dan jenis baris tersebut.

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
*/

Anda MENGGABUNGKAN KE [tabel tujuan] MENGGUNAKAN [kueri Anda] DI [kriteria untuk bergabung dengan kueri ke tujuan] dan KETIKA Anda MENCOCOKAN baris, Anda MEMPERBARUI baris dengan nilai dari kueri. Anda juga dapat INSERT dan DELETE dengan MERGE, tapi saya tidak akan menduplikasi semua file dokumentasi .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menghasilkan baris untuk rentang tanggal dengan kunci

  2. JDBC Oracle Thin Client Gagal ke DB Kedua

  3. Adakah yang bisa menjelaskan Query ini?

  4. Menghapus catatan dari satu tabel bergabung ke tabel lain SQL

  5. menggunakan EXECUTE IMMEDIATE dengan beberapa argumen pengikatan yang sama