sql >> Databasteknik >  >> RDS >> Mysql

mysql:uppdatera med underfråga,

Om du vill uppdatera alla rader i data tabell kan du göra något så här:

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

ANMÄRKNINGAR:

Om det finns flera rader i node med samma värde för title , som matchar ett name i data , det är obestämt vilken av dessa rader värdet på nid kommer att tilldelas från.

Om det finns värden för name i data tabell som inte finns i node tabell (i title kolumn), kommer ett NULL-värde att tilldelas till id kolumn.

Vissa justeringar av frågan kan ändra detta beteende.

Det är möjligt att åstadkomma detta med en underfråga, men jag skulle bara använda en join-operation. Jag tror att du kan använda en korrelerad underfråga, så här:

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



  1. Hur man partitionerar en tabell med ett LIKE-kriterium i Mysql

  2. hur man får mysql-tabellstorlek i GB

  3. Får fel när SELECT-satsen körs i Toad for MySQL

  4. ListView Kontroll Dra-släpp Sortera händelser