例如與Oracle:我想要一些臨時表是用於合併:有沒有一種有效的方法來避免SQL中的固定值UNION?
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特有的?
謝謝
如何使用表格存儲* fixed *值? – dotjoe 2011-03-24 13:50:37
@dotjoe:你如何快速填充它? 'INSERT INTO SELECT UNION SELECT'表。 – Benoit 2011-03-24 13:51:56
難道你不能簡單地填寫一次,重用表?或者值改變了嗎? – dotjoe 2011-03-24 14:02:34