logo

Інструкція SQL MERGE

Інструкція SQL MERGE комбайни ВСТАВИТИ , ВИДАЛИТИ , і ОНОВЛЕННЯ заяв в один єдиний запит.

java перевертає рядок

Інструкція MERGE в SQL

Оператор MERGE у SQL використовується для виконання операцій вставки, оновлення та видалення на a цільова таблиця на основі результатів JOIN з a вихідна таблиця . Це дозволяє користувачам синхронізувати дві таблиці, виконуючи операції з однією таблицею на основі результатів з другої таблиці.



Оператор MERGE порівнює дані між вихідною та цільовою таблицями на основі вказаних ключових полів. Він виконує відповідні дії, як-от вставляння нових записів, оновлення існуючих, видалення чи позначення записів, яких більше немає в джерелі.

Цей оператор забезпечує гнучкий спосіб керування змінами даних і зазвичай використовується в таких сценаріях, як обслуговування Розміри, що повільно змінюються ( SCD ) в ОБ'ЄДНАТИ В target_table
ВИКОРИСТАННЯ вихідної_таблиці
ON merge_condition
КОЛИ СПІВІДАЄТЬСЯ ТО
UPDATE SET стовпець1 = значення1 [, стовпець2 = значення2 …]
КОЛИ НЕ ВІДПОВІДАЄ ТО
INSERT (стовпець1 [, стовпець2 …])
VALUES (значення1 [, значення2 …]);

Приклад оператора SQL MERGE

Припустимо, є дві таблиці:



  • PRODUCT_LIST це таблиця, яка містить поточні відомості про продукти, доступні з полями P_ID, P_NAME і P_PRICE, що відповідають ідентифікатору, назві та ціні кожного продукту.
  • UPDATED_LIST це таблиця, яка містить нові відомості про продукти, доступні з полями P_ID, P_NAME і P_PRICE, що відповідають ідентифікатору, назві та ціні кожного продукту.

два столи


Завдання полягає в тому, щоб оновити деталі продуктів у PRODUCT_LIST відповідно до UPDATED_LIST.

Рішення



Тепер, щоб краще пояснити цей приклад, давайте розділимо його на кроки.

Крок 1: Розпізнайте таблицю TARGET і SOURCE

Отже, у цьому прикладі, оскільки запитується оновити продукти в PRODUCT_LIST відповідно до UPDATED_LIST, отже, PRODUCT_LIST діятиме як TARGET, а UPDATED_LIST — як SOURCE таблиця.

цільова та вихідна таблиці

Крок 2: Розпізнайте операції, які потрібно виконати.

Тепер, як видно, існує три невідповідності між таблицею TARGET і SOURCE, а саме:

1. Вартість КАВИ в TARGET становить 15,00, а в SOURCE — 25,00

як центрувати зображення на css
 PRODUCT_LIST 102 COFFEE 15.00   UPDATED_LIST 102 COFFEE 25.00>

2. У SOURCE немає продукту BISCUIT, але він є в TARGET

 PRODUCT_LIST 103 BISCUIT 20.00>

3. У TARGET немає продукту CHIPS, але він є в SOURCE

 UPDATED_LIST 104 CHIPS 22.00>

Отже, у TARGET потрібно виконати три операції відповідно до наведених вище розбіжностей. Вони є:

1. Операція ОНОВЛЕННЯ

102 COFFEE 25.00>

2. Операція DELETE

Катріна Кайф
103 BISCUIT 20.00>

3. Операція INSERT

104 CHIPS 22.00>

Крок 3: Напишіть запит SQL

The SQL запит виконувати вищезазначені операції за допомогою Оператор MERGE це:

SQL
/* Selecting the Target and the Source */ MERGE PRODUCT_LIST AS TARGET  USING UPDATE_LIST AS SOURCE   /* 1. Performing the UPDATE operation */  /* If the P_ID is same,   check for change in P_NAME or P_PRICE */  ON (TARGET.P_ID = SOURCE.P_ID)  WHEN MATCHED   AND TARGET.P_NAME  SOURCE.P_NAME   OR TARGET.P_PRICE  SOURCE.P_PRICE  /* Update the records in TARGET */  THEN UPDATE   SET TARGET.P_NAME = SOURCE.P_NAME,  TARGET.P_PRICE = SOURCE.P_PRICE    /* 2. Performing the INSERT operation */  /* When no records are matched with TARGET table   Then insert the records in the target table */  WHEN NOT MATCHED BY TARGET   THEN INSERT (P_ID, P_NAME, P_PRICE)   VALUES (SOURCE.P_ID, SOURCE.P_NAME, SOURCE.P_PRICE)  /* 3. Performing the DELETE operation */  /* When no records are matched with SOURCE table   Then delete the records from the target table */  WHEN NOT MATCHED BY SOURCE   THEN DELETE /* END OF MERGE */>

Вихід:

 PRODUCT_LIST P_ID P_NAME P_PRICE 101 TEA 10.00  102 COFFEE 25.00 104 CHIPS 22.00>

Отже, таким чином ми можемо виконати всі ці три основні оператори в SQL разом за допомогою оператора MERGE.

Примітка: У синтаксисі MERGE можна використовувати будь-яке ім’я, окрім мети та джерела. Вони використовуються лише для кращого пояснення.

Важливі моменти про оператор SQL MERGE

  • Інструкція SQL MERGE поєднує ВСТАВИТИ , ОНОВЛЕННЯ , і ВИДАЛИТИ операції в одному операторі, що забезпечує ефективну синхронізацію даних між вихідною та цільовою таблицями.
  • Він забезпечує гнучкість у налаштуванні складних сценаріїв SQL, обробляючи кілька операцій обробки даних в одній транзакції.
  • Інструкція SQL MERGE зазвичай використовується в таких сценаріях, як підтримка розмірів, що повільно змінюються (SCD) у сховищах даних.
  • Правильне індексування, оптимізовані умови з’єднання та фільтрування вихідної таблиці для необхідних записів можуть оптимізувати продуктивність оператора MERGE.