2012-05-21 3 views
2

J'ai utilisé la requête suivante pour insérer des valeurs dans le tableauMise à jour de requête select dans MySQL

INSERT INTO `tbl1` SELECT * FROM tbl2 

Ici TB1 est une table temporaire.

Maintenant, je veux quelque chose comme ça

UPDATE `my_table` SELECT * FROM tbl1 

Je sais que la syntaxe de mise à jour est mise à jour TBL SET = vals cols Mais peut-on avoir quelque chose comme la requête d'insertion ci-dessus?

Merci.

+0

ne pensez-vous pas que vous avez donné suffisamment de données –

Répondre

3

Vous pouvez vous joindre à votre table tbl1 avec my_table en utilisant le multi-tables UPDATE Syntaxe:

UPDATE my_table JOIN tbl1 ON ***join_condition*** 
    SET my_table.foo = tbl1.bar, ... 
4

Vous pouvez faire Insert with Select mais pas Update with Select. Mais encore possible en utilisant JOIN au sein de UPDATE.

UPDATE table1 t1 JOIN table2 t2 ON t1.id = t2.id 
SET t1.col1 = t2.col2, t1.col2 = t2.col2 
+0

Je pense que vous voulez dire 'SET t1.col1 = t2.col1' – Rahul

+0

Merci @ Rahul mais ce n'est qu'un exemple. J'essayais d'illustrer le 'format de jointure 'pas l'assignation de données parce que si col1 et col2 de t1 devraient avoir la valeur de col2 de t2? –

+0

Oui, je sais. Pas de Biggie. – Rahul

1

Vous pouvez faire quelque chose comme ceci:

update my_table join tbl1 on my_table.id = tbl1.id 
set my_table.Vaal= tbl1.vaal 
+0

Yaa, c'est en fait la syntaxe SQL Server, pas mysql. bien qu'ils soient presque identiques. – Rahul