Uw subquery is helemaal niet gecorreleerd. De identifier "TableA.key" in de subquery verwijst naar de TableA in de FROM-clausule van de subquery, niet naar de doeltabel van de update (die toevallig ook TableA is). U wilt TableA.field niet bijwerken met de resultatenset van een join met twee tabellen. Dit wil je gewoon:
UPDATE TableA
SET TableA.field = (SELECT TableB.field
FROM TableB
WHERE TableA.key = TableB.key)