这是我当前的数据库架构:
category
表:
+------------+------------+
| id | name |
+------------+------------+
| 1 | category1 |
| 2 | category2 |
+------------+------------+
它是通过以下方式创建的:
CREATE TABLE `category` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3889 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
我需要通过以下方式为每个现有类别记录创建超级类别记录:
parent_id
(应引用id
)parent_id
应设置为其自身记录的id
parent_id
应该设置为新创建记录的id
。预期结果:
+------------+------------+------------+
| id | name | parent_id |
+------------+------------+------------+
| 1 | category1 | 3 |
| 2 | category2 | 4 |
| 3 | category1 | 3 |
| 4 | category2 | 4 |
+------------+------------+------------+
我遇到的困难是为指向新记录parent_id
的现有记录设置id
。
有什么想法吗?
答案 0 :(得分:1)
需要进行自我加入:
update category p
inner join category c
on c.name=p.name
set c.parent_id=p.id
where c.id<>p.id