Dans MySQL, puis-je copier une ligne à insérer dans le même tableau?

insert into table select * from table where primarykey=1

Je veux juste copier une ligne à insérer dans le même tableau (c'est à dire, je veux dupliquer une ligne existante dans la table), mais je veux le faire sans avoir à la liste de toutes les colonnes après le "select", parce que ce tableau a trop de colonnes.

Mais quand je fais cela, j'obtiens l'erreur:

Entrée en double 'xxx' for key 1

Je peux gérer cela par la création d'une autre table avec les mêmes colonnes, à titre temporaire, un conteneur pour l'enregistrement je veux copier:

create table oldtable_temp like oldtable;
insert into oldtable_temp select * from oldtable where key=1;
update oldtable_tem set key=2;
insert into oldtable select * from oldtable where key=2;

Est-il un moyen plus simple de résoudre ce problème?

  • J'ai juste un commentaire à faire sur les valeurs codées en dur pour la clé. Je voudrais faire quelque chose comme max(oldtable.id) + oldtable_temp.key de cette façon, je assurez-vous que l'id de l'incrément et sont uniques.
  • Double Possible de Dupliquer / Copier des enregistrements de la même table MySQL
  • cela a plus de réponses et plus de points de vue que cette question
InformationsquelleAutor lina | 2010-10-28