MySQL Copy row but with new id
有时候我们需要复制一行记录,但是希望新行有一个新的ID。这在MySQL中非常容易做到。下面我们来介绍两种实现方式。
阅读更多:MySQL 教程
方法一:使用INSERT语句
可以使用INSERT INTO语句复制行,并更改列的值。例如,我们有一个名为users的表,包含id和name两列。我们想要复制一个ID为1的行,但是用一个新的ID来创建一个新行。我们可以使用以下代码:
INSERT INTO users (name)
SELECT name FROM users WHERE id = 1;
这样,就可以复制一行,并且新行会被赋予一个新的ID。
方法二:使用SELECT语句并ON DUPLICATE KEY UPDATE
这种方法的优势在于它支持一次插入多行,并且可以用来更新现有行的值。在这种方法中,我们需要创建一个SELECT语句来选择我们要复制的行,并将其与一个INSERT语句和一个ON DUPLICATE KEY UPDATE子句一起使用。
例如,我们想要复制ID为1和2的行,但是用新的ID来创建两个新行。我们可以使用以下代码:
INSERT INTO users (id, name)
SELECT id + 100, name FROM users WHERE id IN (1,2)
ON DUPLICATE KEY UPDATE id = VALUES(id), name = VALUES(name);
这样,会在users表中创建两个新行,ID分别为101和102。
总结
无论是使用INSERT语句还是SELECT语句并ON DUPLICATE KEY UPDATE,MySQL都允许轻松复制一行并用新的ID创建新行。具体方法取决于需要复制的行数及其它条件,我们可以选择适合自己的方式。
极客教程