sql >> Base de Datos >  >> RDS >> Mysql

mysql:actualizar con subconsulta,

Si desea actualizar todas las filas en los data table, puedes hacer algo como esto:

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

NOTAS:

Si hay varias filas en node con el mismo valor para title , que coincide con un name en data , es indeterminado cuál de esas filas tiene el valor de nid será asignado desde.

Si hay valores de name en los data tabla que no se encuentran en el node tabla (en el title columna), entonces se asignará un valor NULL al id columna.

Algunos ajustes a la consulta pueden modificar este comportamiento.

Es posible lograr esto usando una subconsulta, pero solo usaría una operación de unión. Creo que podría usar una subconsulta correlacionada, como esta:

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