Su subconsulta no está correlacionada en absoluto. El identificador "TableA.key" en la subconsulta hace referencia a TableA en la cláusula FROM de la subconsulta, no a la tabla de destino de la actualización (que también es TableA). No desea actualizar TableA.field con el conjunto de resultados de una combinación de dos tablas. Simplemente quieres esto:
UPDATE TableA
SET TableA.field = (SELECT TableB.field
FROM TableB
WHERE TableA.key = TableB.key)