sql >> Databáze >  >> RDS >> Mysql

mysql:aktualizace pomocí poddotazu,

Pokud chcete aktualizovat všechny řádky v data tabulky, můžete udělat něco takového:

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

POZNÁMKY:

Pokud je v node více řádků se stejnou hodnotou pro title , který odpovídá name v data , je neurčité, který z těchto řádků má hodnotu nid bude přiřazen od.

Pokud existují hodnoty name v data tabulky, které se nenacházejí v node tabulce (v title sloupec), pak bude k id přiřazena hodnota NULL sloupec.

Některá vylepšení dotazu mohou toto chování změnit.

Je možné to provést pomocí poddotazu, ale použil bych pouze operaci spojení. Myslím, že byste mohli použít korelovaný poddotaz, jako je tento:

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



  1. Soubor výpisu jádra a přidání kódů ladění do aplikace spustitelné pro Oracle Apps

  2. PHP PDO s foreach a fetch

  3. Jak vytvořit událost, která běží každých 24 hodin?

  4. Rozbalovací nabídka – PHP Ajax MySQL