Pokud chcete aktualizovat všechny řádky v data
tabulky, můžete udělat něco takového:
UPDATE data
LEFT
JOIN node
ON node.title = data.name
SET data.id = node.nid
POZNÁMKY:
Pokud je v node
více řádků se stejnou hodnotou pro title
, který odpovídá name
v data
, je neurčité, který z těchto řádků má hodnotu nid
bude přiřazen od.
Pokud existují hodnoty name
v data
tabulky, které se nenacházejí v node
tabulce (v title
sloupec), pak bude k id
přiřazena hodnota NULL sloupec.
Některá vylepšení dotazu mohou toto chování změnit.
Je možné to provést pomocí poddotazu, ale použil bych pouze operaci spojení. Myslím, že byste mohli použít korelovaný poddotaz, jako je tento:
UPDATE data
SET data.id = ( SELECT node.nid
FROM node
WHERE node.title = data.name
ORDER BY node.nid
LIMIT 1
)