Om det finns ett ett-till-många-förhållande mellan t1 och t2 eller mellan t2 och t3 får du många matchningar för varje rad i t1. Om du vet att alla rader i t3 som hör till samma rad i t1 har samma värde i d, då kan du använda DISTINCT
för att ta bort (identiska) dubbletter.
UPDATE table1 t1
SET t1.c = (select DISTINCT t3.d
from table2 t2, table3 t3
where t2.b = t3.b and t1.a = t2.a)
WHERE EXISTS ( SELECT 1 FROM table2 t2, table3 t3 WHERE t1.c = t3.c and t1.a = t2.a);