Sua subconsulta não está correlacionada. O identificador "TableA.key" na subconsulta refere-se à TableA na cláusula FROM da subconsulta, não à tabela de destino da atualização (que também é TableA). Você não deseja atualizar TableA.field com o conjunto de resultados de uma junção de duas tabelas. Você simplesmente quer isso:
UPDATE TableA
SET TableA.field = (SELECT TableB.field
FROM TableB
WHERE TableA.key = TableB.key)