Twoje podzapytanie nie jest w ogóle skorelowane. Identyfikator „TableA.key” w podzapytaniu odnosi się do TableA w klauzuli FROM podzapytania, a nie do tabeli docelowej aktualizacji (która również jest TableA). Nie chcesz aktualizować TableA.field za pomocą zestawu wyników sprzężenia dwóch tabel. Po prostu tego chcesz:
UPDATE TableA
SET TableA.field = (SELECT TableB.field
FROM TableB
WHERE TableA.key = TableB.key)