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

mysql:opdatering med underforespørgsel,

Hvis du vil opdatere alle rækker i data tabel, kan du gøre noget som dette:

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

BEMÆRKNINGER:

Hvis der er flere rækker i node med samme værdi for title , som matcher et name i data , det er ubestemt, hvilken af ​​disse rækker værdien af ​​nid vil blive tildelt fra.

Hvis der er værdier for name i data tabel, som ikke findes i node tabel (i title kolonne), så vil en NULL-værdi blive tildelt id kolonne.

Nogle justeringer af forespørgslen kan ændre denne adfærd.

Det er muligt at opnå dette ved hjælp af en underforespørgsel, men jeg ville bare bruge en join-operation. Jeg tror, ​​du kunne bruge en korreleret underforespørgsel, som denne:

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



  1. Hvornår kan vi bruge et identifikationsnummer i stedet for dets navn i PostgreSQL?

  2. Hvordan kan jeg håndtere MySQL polygon overlapningsforespørgsler?

  3. PostgreSQL Column eksisterer ikke, men det gør den faktisk

  4. Django-kode eller MySQL-udløsere