sql >> Databasteknik >  >> RDS >> Mysql

Kan jag kopiera en rad i MySQL för att infoga i samma tabell?

Jag använde Leonard Challis teknik med några ändringar:

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;

Som en temptabell bör det aldrig finnas mer än en post, så du behöver inte oroa dig för primärnyckeln. Om du ställer in den på null kan MySQL välja själva värdet, så det finns ingen risk att skapa en dubblett.

Om du vill vara supersäker på att du bara får en rad att infoga kan du lägga till LIMIT 1 i slutet av INSERT INTO-raden.

Observera att jag också har lagt till det primära nyckelvärdet (1 i det här fallet) till mitt temporära tabellnamn.



  1. Datatypsprioritet i SQL Server

  2. SIN() Exempel i SQL Server

  3. BadImageFormatException. Detta inträffar när du kör i 64-bitarsläge med 32-bitars Oracle-klientkomponenter installerade

  4. Aktivera TLS i Oracle Apps R12.2