在MySQL中复制一行的最简单方法

时间:2011-06-28 13:55:13

标签: mysql sql insert

在MySQL中克隆具有不同ID的行的最简单方法是什么。

例如:

产品

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 个答案:

答案 0 :(得分:4)

您可以使用子查询

   INSERT INTO 
          donation (name,price) 
   SELECT name,price
     FROM donation 
    WHERE product_id = 1

答案 1 :(得分:0)

INSERT INTO产品(名称,价格)VALUES((SELECT name FROM Products WHERE product_id = 1),(SELECT FROM FROM Products WHERE product_id = 2));

答案 2 :(得分:0)

INSERT INTO Products (name, price)
VALUES 
((SELECT name, price 
    FROM Products  
   WHERE product_id = 1));

答案 3 :(得分:0)

如果要使用单个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。