我已经寻找了一段时间,但找不到适合我问题的简单解决方案。我想在表中复制一条记录,但是当然,唯一的主键需要更新。
我有这个查询:
INSERT INTO invoices SELECT * FROM invoices AS iv WHERE iv.ID=XXXXX ON DUPLICATE KEY UPDATE ID = (SELECT MAX(ID)+1 FROM invoices)
问题在于,这只是更改ID行的,而不是复制行。有人知道如何解决这个问题吗?
ID
// edit:我想在不键入所有字段名称的情况下执行此操作,因为字段名称会随着时间变化。
我通常使用的方法是使用临时表。它可能在计算上效率不高,但看起来还可以!在这里,我要完全复制记录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;
希望对您有用!