sql >> Database >  >> RDS >> Mysql

Kan ik in MySQL één rij kopiëren om in dezelfde tabel in te voegen?

Ik gebruikte de techniek van Leonard Challis met een paar wijzigingen:

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;

Als tijdelijke tabel mag er nooit meer dan één record zijn, dus u hoeft zich geen zorgen te maken over de primaire sleutel. Door het op null in te stellen, kan MySQL de waarde zelf kiezen, dus er is geen risico op het maken van een duplicaat.

Als u er zeker van wilt zijn dat u maar één rij hoeft in te voegen, kunt u LIMIT 1 toevoegen aan het einde van de INSERT INTO-regel.

Merk op dat ik ook de waarde van de primaire sleutel (1 in dit geval) aan mijn tijdelijke tabelnaam heb toegevoegd.



  1. SQL - Meerdere soortgelijke zoekopdrachten combineren

  2. SequelizeConnectionError:zelfondertekend certificaat

  3. Scripts genereren om beperkingen voor externe sleutels in SQL Server-database opnieuw te maken - SQL Server / TSQL-zelfstudie, deel 73

  4. Er treedt een time-out op bij de query wanneer deze wordt uitgevoerd vanaf het web, maar supersnel wanneer deze wordt uitgevoerd vanaf SSMS