Hvis du vil opdatere alle rækker i data
tabel, kan du gøre noget som dette:
UPDATE data
LEFT
JOIN node
ON node.title = data.name
SET data.id = node.nid
BEMÆRKNINGER:
Hvis der er flere rækker i node
med samme værdi for title
, som matcher et name
i data
, det er ubestemt, hvilken af disse rækker værdien af nid
vil blive tildelt fra.
Hvis der er værdier for name
i data
tabel, som ikke findes i node
tabel (i title
kolonne), så vil en NULL-værdi blive tildelt id
kolonne.
Nogle justeringer af forespørgslen kan ændre denne adfærd.
Det er muligt at opnå dette ved hjælp af en underforespørgsel, men jeg ville bare bruge en join-operation. Jeg tror, du kunne bruge en korreleret underforespørgsel, som denne:
UPDATE data
SET data.id = ( SELECT node.nid
FROM node
WHERE node.title = data.name
ORDER BY node.nid
LIMIT 1
)