Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy w MySQL mogę skopiować jeden wiersz, aby wstawić go do tej samej tabeli?

Użyłem techniki Leonarda Challisa z kilkoma zmianami:

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;

Jako tabela tymczasowa nigdy nie powinna istnieć więcej niż jeden rekord, więc nie musisz się martwić o klucz podstawowy. Ustawienie jej na null pozwala MySQL na wybranie samej wartości, więc nie ma ryzyka utworzenia duplikatu.

Jeśli chcesz mieć pewność, że otrzymujesz tylko jeden wiersz do wstawienia, możesz dodać LIMIT 1 na końcu wiersza INSERT INTO.

Zauważ, że dodałem również wartość klucza podstawowego (w tym przypadku 1) do nazwy mojej tabeli tymczasowej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO MySQL:użyć PDO::ATTR_EMULATE_PREPARES czy nie?

  2. Czy różne bazy danych używają różnych cytatów z nazwy?

  3. Jak filtrować wyniki SQL w relacji ma wiele przejść?

  4. Różnica między schematem / bazą danych w MySQL

  5. MySQL sprawdza, czy tabela istnieje bez zgłaszania wyjątku