Есть ли способ использовать MERGE в HANA без исходной таблицы? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь использовать MERGE в HANA для вставки или обновления таблицы без второй таблицы в качестве источника.Это должно быть сделано в одной команде, без процедур хранения.Кроме того, UPSERT не будет работать в этом случае.

Я нашел этот ответ для SQL, но HANA, похоже, не нравится VALUES в предложении USING.

SQL Server MERGEбез исходной таблицы

Вот ответ для SQL из поста выше:

MERGE TARGET_TABLE AS I

USING (VALUES ('VALUE1', 'VALUE2)')) as s (COL1, COL2)

ON I.COL1 = s.COL1

КОГДА СООТВЕТСТВУЕТ, ЧЕМ ...

КОГДА НЕ СООТВЕТСТВУЕТ, ЧЕМ ...

Спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Команда MERGE INTO специально разработана для случаев использования типа ETL, когда данные из одной таблицы должны быть объединены в другую таблицу, а ее данные там.Вставка одного кортежа возможна с помощью подзапроса, например:

select * from t;  -- single integer column 'C'
insert into t values (2);

c
-
2

команда слияния, вставка 4 или обновление совпадений до 100

merge into t
      using (select 4 c from dummy) s 
      on t.c = s.c
   when matched then 
        update set t.c = 100
   when not matched then 
        insert values (s.c);

c
--
2
4  

runкоманда слияния снова

c
--
2
100        

Итак, все работает отлично.

Что касается команды UPSERT/REPLACE, использование VALUES вполне возможно и даже объяснено в примерах команд в справочной документации.

...