我的資料庫中有 3 個表
我需要從 table1 中獲取每個 id,如果它存在則需要在 table2 中查看,然后對該 Id 不采取任何其他措施,如果我能夠找到它,我需要查看 table3 然后獲取電話號碼以及表 1 中的詳細資訊將其插入到表 2 中。如何在 oracle 中執行此操作?

uj5u.com熱心網友回復:
你可以試試這個:
db<>小提琴
INSERT INTO table_2
SELECT table_1.id, table_1.name, table_1.gender, table_1.age, table_3.phone_num
FROM table_1
INNER JOIN table_3 ON table_1.id = table_3.id
WHERE table_1.id NOT IN (SELECT id FROM table_2);
uj5u.com熱心網友回復:
您可以使用一條MERGE陳述句來避免訪問Table2兩次:
MERGE INTO table2 dst
USING (
SELECT t1.*, t3.phone_num
FROM table1 t1
LEFT OUTER JOIN table3 t3
ON (t1.id = t3.id)
) src
ON (src.id = dst.id)
WHEN NOT MATCHED THEN
INSERT (id, name, gender, age, phone_num)
VALUES (src.id, src.name, src.gender, src.age, src.phone_num);
如果您還想更新現有行,則可以在同一陳述句中執行此操作:
MERGE INTO table2 dst
USING (
SELECT t1.*, t3.phone_num
FROM table1 t1
LEFT OUTER JOIN table3 t3
ON (t1.id = t3.id)
) src
ON (src.id = dst.id)
WHEN MATCHED THEN
UPDATE
SET name = src.name,
gender = src.gender,
age = src.age,
phone_num = src.phone_num
WHEN NOT MATCHED THEN
INSERT (id, name, gender, age, phone_num)
VALUES (src.id, src.name, src.gender, src.age, src.phone_num);
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/481849.html
下一篇:我想按年齡段制作圖表
