Respostas:
db_update()
não implementa nenhuma interface que tenha join()
/ innerJoin()
/ etc. métodos, então eu acho que você está preso ao uso db_query()
e gravação manual da string de consulta.
$sql = "
UPDATE field_data_field_TEST as ft
left join node as n on ft.entity_id = n.nid
set n.type = :type1
where n.type = :type2";
$args = array(':type1' => 'test', ':type2' => 'foo');
db_query($sql, $args);
db_query()
. Se você deseja manter rigidamente a documentação, com certeza, uma condição com uma subconsulta seria uma opção. Mas, como você diz, seria menos eficiente e, para mim, não caiu 'melhor' do que usar uma consulta sql direta
Update
não implementa nenhuma join
função, ainda é necessário usar a consulta genérica para este caso.