複数のテーブル内のフィールドの値を変更

Steste2020:

私は2つのテーブル内のデータをクリーンアップする必要があります。これらは私のテーブルです。

表1

id     |   name  |   visible
48871  |   John  |      0
9711015|   Luke  |      1
547574 |   Mike  |      0

表2

id     |   parent_id  |   visible
1      |   48871      |      0
2      |   9711015    |      1
3      |   547574     |      0

私はますますID(最初のテーブル)とPARENT_ID(第2テーブル)のIDを更新したいと思います。だから私はこのような2つのテーブルを変換したいと思います:

表1

id     |   name  |   visible
1      |   John  |      0
2      |   Luke  |      1
3      |   Mike  |      0

表2

id     |   parent_id  |   visible
1      |       1      |      0
2      |       2      |      1
3      |       3      |      0

それが可能だ?私は何を使うべきでしょうか?

ゴードン・リノフ:

MySQLは、同時に更新複数のテーブルをアップすることができます。だから、あなたが行うことができます。

update table1 t1 join
       (select t1.*,
               row_number() over (order by t1.id) as new_id
        from table1 t1
       ) tt1
       on t1.id = tt1.id left join
       table2 t2
       on t2.parent_id = t1.id
    set t1.id = tt1.new_id,
        t2.parent_id = tt1.new_id;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=28710&siteId=1