У меня проблема с обновлением Oracle SQL с помощью join.У меня есть таблица А, которая имеет 5 столбцов (C1, C2, C3, C4, C5)
;таблица B, которая имеет 3 столбца (D1, D2, D3)
.Для таблицы A я использую только 2 столбца (C2, C3)
, чтобы присоединиться к таблице B (D1, D2)
, и обновляю столбец C2 таблицы A с столбцом таблицы D B3.
Для таблицы A будет много дубликатов для обоихС2 и С3;но для условия C4 как 10 не будет дубликатов, которые я хочу обновить.
Например, таблица A имеет записи как:
1,100,1500,10,'ORG'
1,200,2000,10,'ORG'
1,300,2500,10,'ORG'
2,1000,500,20,'PERSON'
2,1000,200,20,'PERSON'
2,2000,200,20,'PERSON'
Вы можете видеть это для C4для 10 нет дубликатов для C2 и C3.Но для C4 как 20 будут дубликаты для C2 и C3.
Для таблицы B это будет выглядеть как
100,1500,80
200,2000,100
300,3000,200
Для таблицы B нет дубликатов, и она присоединится к Bс A как A.C2 = B.D1 и A.C3 = B.D2 для обновления A.C2 до B.D3.
Мне нужно только обновить записи C4 = 10, чтобы объединиться с таблицей B на основеB.D1 и B.D2.
У меня SQL, как показано ниже, но не удалось, так как
ORA-01779: невозможно изменить столбец, который сопоставляется с таблицей без сохранения ключа
Может кто-нибудь сказать мне, что не так с моим SQL?
UPDATE (
SELECT A.C2 OID, B.D3 TID FROM A, B
WHERE A.C2 = B.D1 AND A.C3 = B.D2 AND A.C4=10 AND B.D3 <> ' ' )
SET OID = TID
Большое спасибо!