Se você deseja atualizar todas as linhas no
data
tabela, você pode fazer algo assim:UPDATE data
LEFT
JOIN node
ON node.title = data.name
SET data.id = node.nid
NOTAS:
Se houver várias linhas no
node
com o mesmo valor para title
, que corresponde a um name
em data
, é indeterminado qual dessas linhas o valor de nid
será atribuído de. Se houver valores de
name
nos data
tabela que não são encontradas no node
tabela (no title
coluna), então um valor NULL será atribuído ao id
coluna. Alguns ajustes na consulta podem modificar esse comportamento.
É possível fazer isso usando uma subconsulta, mas eu usaria apenas uma operação de junção. Eu acho que você poderia usar uma subconsulta correlacionada, assim:
UPDATE data
SET data.id = ( SELECT node.nid
FROM node
WHERE node.title = data.name
ORDER BY node.nid
LIMIT 1
)