重复的MySQL父子记录

时间:2013-10-02 14:19:04

标签: mysql

我有一张MySQL表:

  • ID
  • 名称
  • PARENT_ID
  • 版本

parent_id是同一个表中id的外键。

我想将版本= 1的所有记录复制到版本= 2,同时保留父/子结构。

当我使用此查询时:

INSERT INTO 
    table 
    (
        name,
        parent_id,
        version
    )
SELECT
    name,
    parent_id,
    2
FROM 
    table
WHERE 
    version = 1

新记录(ofcourse)成为旧记录的子项......那么,如何将parent_id设置为新创建的记录?

2 个答案:

答案 0 :(得分:1)

您可以尝试开发一种映射策略,在该策略中您可以找出新ID的位置并将其映射回它们,或者您可以简单地将新ID偏移一定量:

INSERT INTO `table` (id, name, parent_id, version)
  SELECT id+10000, name, parent_id+10000, 2
  FROM `table`
  WHERE version=1

在这种情况下,10000将大于该表中的SELECT MAX(id)。如果锁定表,计算最大值并执行插入,则可以将其写为单个语句。 4

答案 1 :(得分:0)

试试这个:

INSERT INTO 
    table 
    (
        name,
        parent_id,
        version
    )
SELECT
    name,
    id,
    2
FROM 
    table
WHERE 
    version = 1