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 に答える