sql >> Database >  >> RDS >> Mysql

mysql:update met subquery,

Als u alle rijen in de data . wilt bijwerken tabel, kunt u zoiets als dit doen:

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

OPMERKINGEN:

Als er meerdere rijen zijn in node met dezelfde waarde voor title , die overeenkomt met een name in data , het is onbepaald welke van die rijen de waarde van nid wordt toegewezen vanaf.

Als er waarden zijn van name in de data tabel die niet worden gevonden in het node tabel (in de title kolom), dan wordt een NULL-waarde toegewezen aan de id kolom.

Sommige aanpassingen aan de query kunnen dit gedrag wijzigen.

Het is mogelijk om dit te bereiken met behulp van een subquery, maar ik zou gewoon een join-bewerking gebruiken. Ik denk dat je een gecorreleerde subquery zou kunnen gebruiken, zoals deze:

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



  1. voorlaatste rij van een tabel mysql

  2. Hoe zou je de uren van een bedrijf opslaan in de db/model van een Rails app?

  3. PostgreSQL geeft gegevens van recursieve CTE door aan functie

  4. PHP singleton database verbindingspatroon