Si vous souhaitez mettre à jour toutes les lignes dans les data
table, vous pouvez faire quelque chose comme ceci :
UPDATE data
LEFT
JOIN node
ON node.title = data.name
SET data.id = node.nid
REMARQUES :
S'il y a plusieurs lignes dans node
avec la même valeur pour title
, qui correspond à un name
dans data
, il est indéterminé laquelle de ces lignes la valeur de nid
sera attribué à partir de.
S'il y a des valeurs de name
dans les data
table qui ne se trouvent pas dans le node
tableau (dans le title
colonne), alors une valeur NULL sera attribuée à l'id
colonne.
Certaines modifications apportées à la requête peuvent modifier ce comportement.
Il est possible d'accomplir cela en utilisant une sous-requête, mais j'utiliserais simplement une opération de jointure. Je pense que vous pourriez utiliser une sous-requête corrélée, comme celle-ci :
UPDATE data
SET data.id = ( SELECT node.nid
FROM node
WHERE node.title = data.name
ORDER BY node.nid
LIMIT 1
)