古い MySQL ベースを新しいものに変更しようとしています。自分では解決できないので質問させてください。
5 つの列を持つ古いテーブルがあります。
*table_old*
id | name_1 | name_2 | name_3 | role
1 | aaa | bbb | ccc | g
2 | aaa | ccc | ddd | f
3 | bbb | aaa | ddd | g
等々。
2 つの列で名前の値を格納する新しいテーブルを作成しました。次のようになります。
*table_name*
id | name
1 | aaa
2 | bbb
3 | ccc
4 | ddd
それを使用して新しいテーブルに名前を付けているため (古いテーブルの最後の列)、4 つの列を持つ新しいテーブルを作成できます。
*table_g*
id | name_1 | name_2 | name_3
1 | aaa | bbb | ccc
2 | bbb | aaa | ddd
*table_f*
id | name_1 | name_2 | name_3
1 | aaa | ccc | ddd
また、名前が非常に長くなる可能性があるため、名前の代わりにテーブル 2 の id 値を使用することをお勧めします。そのようなものを取得したいと思います。
*table_g*
id | id_1 | id_2 | id_3
1 | 1 | 2 | 3
2 | 2 | 1 | 4
*table_f*
id | id_1 | id_2 | id_3
1 | 1 | 3 | 4
列の名前を *name_1* から *id_1* などに変更しました。
今、私は助けを求めています。私はそのようなものを使用しようとしています:
INSERT INTO `table_g`(`id_1`, `id_2`, `id_3`)
SELECT `table_name`.`id`,`table_name`.`id`,`table_name`.`id`
FROM `table_name`
RIGHT JOIN `table_old` ON `table_name`.`name` = `table_old`.`name_1`
RIGHT JOIN `table_old` ON `table_name`.`name` = `table_old`.`name_2`
RIGHT JOIN `table_old` ON `table_name`.`name` = `table_old`.`name_3`
WHERE `table_old`.`role` = 'g';
しかし、これはうまくいきません...できれば助けてください:/