一尘不染

在同一MySQL表中复制/复制记录

mysql

我已经寻找了一段时间,但找不到适合我问题的简单解决方案。我想在表中复制一条记录,但是当然,唯一的主键需要更新。

我有这个查询:

INSERT INTO invoices
    SELECT * FROM invoices AS iv WHERE iv.ID=XXXXX
    ON DUPLICATE KEY UPDATE ID = (SELECT MAX(ID)+1 FROM invoices)

问题在于,这只是更改ID行的,而不是复制行。有人知道如何解决这个问题吗?

// edit:我想在不键入所有字段名称的情况下执行此操作,因为字段名称会随着时间变化。


阅读 327

收藏
2020-05-17

共1个答案

一尘不染

我通常使用的方法是使用临时表。它可能在计算上效率不高,但看起来还可以!在这里,我要完全复制记录99,创建记录100。

CREATE TEMPORARY TABLE tmp SELECT * FROM invoices WHERE id = 99;

UPDATE tmp SET id=100 WHERE id = 99;

INSERT INTO invoices SELECT * FROM tmp WHERE id = 100;

希望对您有用!

2020-05-17