0

我有一个这样的 MySQL 表

id parentid name
-- ------ ----
1    0      name1
2    1      name2
3    2      name3
4    0      name4
.    .       ....

将一些行复制到新表后,如果它不是 0,我需要将 parentid 值替换为新插入的 id,如下所示

ids parentids names
-- ------     ----
10     0      name1
11    10      name2
12    11      name3
13     0      name4
.  .          ....

如何使用 PHP 和 MySQL 建立它?谢谢你。

4

2 回答 2

1

您可能应该尽一切可能使 ID 保持不变。如果这是不可避免的,您将不得不重新映射它们:

CREATE TEMPORARY TABLE _remap AS
  SELECT table_b.id AS new_id, table_a.id AS old_id
    FROM table_b
    LEFT JOIN table_a ON table_a.name=table_b.name

UPDATE table_b,_remap SET table_b.parent_id=_remap.new_id
  WHERE table_b.parent_id=_remap.old_id

这假定您的name列是唯一的。

于 2013-04-30T20:38:28.750 回答
1

我不太清楚“到新插入的 ID”是什么意思,但这可能会帮助您入门:

UPDATE tableName SET `parentid` = '(Enter new value here)' WHERE parentid != 0;
于 2013-04-30T20:33:46.230 回答