Например, с Oracle: я хочу использовать временную таблицу для слияния:
MERGE INTO my_target_table
USING (
WITH tbl1 AS ( SELECT 'a' col1 FROM dual -- <--- THIS
UNION SELECT 'foo' col1 FROM dual -- <--- IS
UNION SELECT 'doh' col1 FROM dual -- <--- CRAPPY
),
tbl2 AS ( SELECT 'b' col2, 'c' col3 FROM dual -- <--- THIS
UNION SELECT 'x' col2, 's' col3 FROM dual -- <--- ALSO
)
SELECT col1, col2, col3 FROM tbl1 CROSS JOIN tbl2
) my_source_view
ON ( my_target_table.col1 = my_source_view.col1
AND my_target_table.col2 = my_source_view.col2
)
WHEN MATCHED THEN UPDATE
SET my_target_table.col3 = my_source_view.col3
WHEN NOT MATCHED THEN INSERT( col1, col2, col3)
VALUES(my_source_view.col1, my_source_view.col2, my_source_view.col3)
;
Шаблон SELECT UNION SELECT
здесь действительно раздражает, и я нахожу его отвратительным (повторяющимся, многословным).
У вас есть способ подделать похожие запросы, будь то специфичный для Oracle или нет?
Спасибо