Відповіді:
db_update()не реалізує жодних інтерфейсів, які мають join()/ innerJoin()/ тощо. методи, тому я думаю, що ви затрималися з використанням db_query()і записом рядка запиту вручну.
$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(). Якщо ви хочете жорстко дотримуватися документації, тоді переконайтесь, що умова з підзапитом буде варіантом. Але, як ви кажете, це було б менш ефективно, і для мене не вийшло нічого кращого, ніж використання прямого sql запиту
Updateне реалізує жодних joinфункцій, все ж потрібно використовувати загальний запит для цього випадку.