Oracle
 sql >> база данни >  >> RDS >> Oracle

Преобразувайте Select Oracle Query в Updte за конкретен сценарий

Чудесен начин да актуализирате таблица от заявка е да използвате оператор MERGE. Ето пример, който копира all_objects и добавя колона с броя на обектите, които съответстват на собственика и типа на този ред.

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

Вие се СЛИВАТЕ В [таблица на местоназначение], ИЗПОЛЗВАЙТЕ [вашата заявка] НА [критерии за присъединяване на заявка към местоназначение] и КОГАТО СЪВМЕСТИТЕ ред, вие АКТУАЛИЗИРАТЕ реда със стойностите от заявката. Можете също да INSERT и DELETE с MERGE, но няма да дублирам всички документация .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Индекс с постоянно време за колона с низове в база данни на Oracle

  2. Как да извлечете повтарящи се стойности на json възел отделно от XML с помощта на ORACLE SQL?

  3. Инсталиране на разширение oci8 в linux за php?

  4. Импортиране на дъмп с параметър SQLFILE, който не връща данните в таблицата

  5. дублиращи се резултати