Mysql,如何将现有行克隆到具有继续 id(不为 null(的同一表中。 像这样的示例表。
水果:-
----------------------------------
id | name | color | cc |
----------------------------------
1 | Apple | red | 111 |
2 | Banano | yellow | 111 |
3 | Melon | Green | 111 |
到新(同表(:-
水果:-
----------------------------------
id | name | color | cc |
----------------------------------
1 | Apple | red | 111 |
2 | Banana | yellow | 111 |
3 | Melon | Green | 111 |
4 | Apple | red | 222 |
5 | Banana | yellow | 222 |
6 | Melon | Green | 222 |
7 | Apple | red | 333 |
8 | Banana | yellow | 333 |
9 | Melon | Green | 333 |
谢谢。
假设 ID 是一个自动递增字段,那么只需
INSERT INTO `fruit` (`name`, `color`, `cc`)
SELECT `name`, `color`, '222'
FROM `fruit`;
INSERT INTO `fruit` (`name`, `color`, `cc`)
SELECT `name`, `color`, '333'
FROM `fruit`
WHERE ID <= 3;
演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=60c151e3c40302d9d7a3b648a7e700dd
如果 ID 不是自动增量字段(可能应该是!(,那么
INSERT INTO `fruit` (`id`, `name`, `color`, `cc`)
SELECT `id`+3, `name`, `color`, '222'
FROM `fruit`;
INSERT INTO `fruit` (`id`, `name`, `color`, `cc`)
SELECT `id`+6,`name`, `color`, '333'
FROM `fruit`
WHERE ID <= 3;
演示:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=a4cf0604267432e4d2e26efdac8b4b19
(当然,假设没有其他人添加、删除或更改这两个语句之间的任何行。如果存在潜在问题,请使用事务(。
注:注:我必须指出,这似乎可能会创建一些冗余数据(即名称和颜色值的重复( - 考虑您是否真的需要某种链接表来表示水果之间的关系,无论"cc"是什么。