Jeśli istnieje relacja jeden-do-wielu między t1 i t2 lub między t2 i t3, otrzymasz wiele dopasowań dla każdego wiersza w t1. Jeśli wiesz, że wszystkie wiersze w t3 należące do tego samego wiersza w t1 mają tę samą wartość w d, możesz użyć DISTINCT
aby usunąć (identyczne) duplikaty.
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);