如何在将一些列复制到新表后用最新的id替换列值


how to I replace a column value with the newest id after copying some columns to a new table?

我有一个这样的MySQL表

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

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

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

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

您可能应该尽您所能保持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列是唯一的

我不太确定您所说的" to a new插入的id "是什么意思,但这可能有助于您开始:

UPDATE tableName SET `parentid` = '(Enter new value here)' WHERE parentid != 0;