Jeśli chcesz zaktualizować wszystkie wiersze w data
tabeli, możesz zrobić coś takiego:
UPDATE data
LEFT
JOIN node
ON node.title = data.name
SET data.id = node.nid
UWAGI:
Jeśli istnieje wiele wierszy w node
z taką samą wartością dla title
, który pasuje do name
w data
, nie wiadomo, który z tych wierszy ma wartość nid
zostanie przydzielony od.
Jeśli istnieją wartości name
w data
tabela, której nie ma w node
tabela (w title
kolumna), wówczas wartość NULL zostanie przypisana do id
kolumna.
Niektóre poprawki w zapytaniu mogą zmienić to zachowanie.
Można to osiągnąć za pomocą podzapytania, ale użyłbym po prostu operacji sprzężenia. Myślę, że możesz użyć skorelowanego podzapytania, takiego jak to:
UPDATE data
SET data.id = ( SELECT node.nid
FROM node
WHERE node.title = data.name
ORDER BY node.nid
LIMIT 1
)