Mysql
 sql >> Database >  >> RDS >> Mysql

mysql:aggiornamento con subquery,

Se vuoi aggiornare tutte le righe nei data tabella, puoi fare qualcosa del genere:

UPDATE data
  LEFT
  JOIN node
    ON node.title = data.name
   SET data.id = node.nid

NOTE:

Se sono presenti più righe in node con lo stesso valore per title , che corrisponde a un name in data , è indeterminato quale di queste righe ha il valore di nid verrà assegnato da.

Se sono presenti valori di name nei data tabella che non si trova nel node tabella (nel title colonna), quindi verrà assegnato un valore NULL a id colonna.

Alcune modifiche alla query possono modificare questo comportamento.

È possibile farlo usando una sottoquery, ma userei semplicemente un'operazione di join. Penso che potresti usare una sottoquery correlata, come questa:

UPDATE data
   SET data.id = ( SELECT node.nid
                     FROM node
                    WHERE node.title = data.name
                    ORDER BY node.nid
                    LIMIT 1
                 )