【发布时间】:2012-04-19 11:58:33
【问题描述】:
我正在尝试将旧的 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';
但这不起作用...如果可以,请提供帮助:/
【问题讨论】:
-
“不起作用”到底是什么意思?你有错误吗?有没有可能是关于“模棱两可的名字”?
-
嗯,我不确定,但我想你忘记了一些括号:
INSERT INTO table ()... (SELECT... FROM... JOINS WHERE...) -
不,我得到了
#1054 - Unknown column 'table_old'.'role' in 'where clause'
标签: mysql