Самый простой способ копирования строки в MySQL - PullRequest
0 голосов
/ 28 июня 2011

Какой самый простой способ клонировать строку с другим идентификатором в MySQL.

Например:

Продукты

product_id  name  price
------------------------
1           a     10
2           b     15

Это выглядит странно, но мне нужно клонировать продукт с id = 1.Так будет выглядеть таблица:

Продукты

product_id  name  price
------------------------
1           a     10
2           b     15
3           a     10

Ответы [ 4 ]

4 голосов
/ 28 июня 2011

Вы можете использовать подзапросы :

   INSERT INTO 
          donation (name,price) 
   SELECT name,price
     FROM donation 
    WHERE product_id = 1
0 голосов
/ 17 ноября 2011

Если вы хотите клонировать строку с одним оператором SQL и не можете или не хотите перечислять все значения, но есть первичный ключ, который вы можете использовать:

INSERT INTO Products
 SELECT *
  FROM Products
  WHERE product_id = 1
 UNION ALL
  SELECT *
   FROM Products
   WHERE product_id = 1
ON DUPLICATE KEY UPDATE product_id=(SELECT MAX(product_id)+1 FROM Products);

Попытка вставить две копии строки в базу данных, и когда вставка первой строки завершается неудачно из-за дублирования product_id, она использует ON DUPLICATE KEY, чтобы обновить существующую строку в таблице до следующего доступного product_id, что оставляет исходный product_id доступен, когда вставлена ​​вторая строка.

0 голосов
/ 28 июня 2011
INSERT INTO Products (name, price)
VALUES 
((SELECT name, price 
    FROM Products  
   WHERE product_id = 1));
0 голосов
/ 28 июня 2011

INSERT INTO Продукты (название, цена) ЗНАЧЕНИЯ ((ВЫБЕРИТЕ имя ИЗ ПРОДУКТОВ, ГДЕ product_id = 1), (ВЫБЕРИТЕ цену ИЗ ПРОДУКТОВ, ГДЕ product_id = 2));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...