Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql:atualização com subconsulta,


Se você deseja atualizar todas as linhas no data tabela, você pode fazer algo assim:
UPDATE data
  LEFT
  JOIN node
    ON node.title = data.name
   SET data.id = node.nid

NOTAS:

Se houver várias linhas no node com o mesmo valor para title , que corresponde a um name em data , é indeterminado qual dessas linhas o valor de nid será atribuído de.

Se houver valores de name nos data tabela que não são encontradas no node tabela (no title coluna), então um valor NULL será atribuído ao id coluna.

Alguns ajustes na consulta podem modificar esse comportamento.

É possível fazer isso usando uma subconsulta, mas eu usaria apenas uma operação de junção. Eu acho que você poderia usar uma subconsulta correlacionada, assim:
UPDATE data
   SET data.id = ( SELECT node.nid
                     FROM node
                    WHERE node.title = data.name
                    ORDER BY node.nid
                    LIMIT 1
                 )