Mysql
 sql >> Base de données >  >> RDS >> Mysql

Dans MySQL, puis-je copier une ligne pour l'insérer dans la même table ?

J'ai utilisé la technique de Leonard Challis avec quelques modifications :

CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM table WHERE primarykey = 1;
UPDATE tmptable_1 SET primarykey = NULL;
INSERT INTO table SELECT * FROM tmptable_1;
DROP TEMPORARY TABLE IF EXISTS tmptable_1;

En tant que table temporaire, il ne devrait jamais y avoir plus d'un enregistrement, vous n'avez donc pas à vous soucier de la clé primaire. Le définir sur null permet à MySQL de choisir lui-même la valeur, il n'y a donc aucun risque de créer un doublon.

Si vous voulez être sûr que vous n'obtenez qu'une seule ligne à insérer, vous pouvez ajouter LIMIT 1 à la fin de la ligne INSERT INTO.

Notez que j'ai également ajouté la valeur de la clé primaire (1 dans ce cas) au nom de ma table temporaire.