2009-09-28 7 views
0

Parfois, si je veux copier rapidement les enregistrements d'une table à une autre (qui a la même structure) J'utilise une requête comme ceci:MySQL: Mise à jour toutes les colonnes avec des valeurs d'une table séparée

INSERT INTO table2 SELECT * FROM table1 WHERE id = some_value

Comment puis-je ajouter un Duplicate KEY UPDATE à cette déclaration? J'ai essayé ceci:

INSERT INTO SELECT * FROM table1 OÙ id = 1 Duplicate KEY SELECT MISE À JOUR * FROM table1 WHERE id = 1

Mais je reçois une erreur. Est-il parti pour accomplir la requête ci-dessus sans énumérer individuellement chaque colonne dans la requête?

P.S. Oui, je me rends compte que ce n'est pas une bonne pratique d'avoir plusieurs tables avec des structures identiques, mais parfois on ne contrôle pas tout sur le lieu de travail!

+0

S'il vous plaît montrer la structure des tables (ou les parties correspondantes, en particulier la définition de la clé qui ne peut pas être dupliquée), avec peut-être un exemple de ligne. – mjv

Répondre

1

Les dessous MISES À JOUR s'il n'y a pas de double emploi et INSERTs PK est il y a:

REPLACE INTO table2(field1, field2, field3) 
SELECT field1, field2,field3 FROM table1 
WHERE id=1; 
+0

Je noterai que c'est une extension MySQL non standard (c'est pourquoi c'est nouveau pour moi). – tpdi

+0

En fait, REPLACE supprime l'enregistrement puis insère un nouvel enregistrement, donc si vous utilisez un horodatage pour quelque chose, il sera perdu –

+0

Mais cela répond à la question +1 –

Questions connexes