Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL插入选择连接_Mysql - Fatal编程技术网

MySQL插入选择连接

MySQL插入选择连接,mysql,Mysql,我正在尝试将旧的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列存储名称值,如下所示

我正在尝试将旧的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
因为我正在使用旧表中的最后一列it角色命名新表,所以我可以创建包含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
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';
我将列的名称从*name_1*更改为*id_1*等

现在我请求帮助。我试着用这样的东西:

*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
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_g`(`id_1`, `id_2`, `id_3`)
SELECT t1.`id`, t2.`id`, t3.`id`
FROM `table_name` tn
  RIGHT JOIN `table_old` t1 ON tn.`name` = t1.`name_1` AND t1.`role` = 'g'
  RIGHT JOIN `table_old` t2 ON tn.`name` = t2.`name_2` AND t2.`role` = 'g'
  RIGHT JOIN `table_old` t3 ON tn.`name` = t3.`name_3` AND t3.`role` = 'g'
乍一看,select中有很多不明确之处,所以至少应该使用上面的代码尝试一下发生了什么


乍一看,您的选择有很多不明确之处,因此至少您应该使用上面的代码尝试一下发生了什么。

您所说的“不工作”到底是什么意思?你有错误吗?有没有可能是关于“模棱两可的名字”的问题?嗯,我不确定,但我想你们忘了一些括号:INSERT INTO table。。。选择从…起加入WHERE…不,我得到了1054-未知列“table_old”。“WHERE子句”中的“role”你所说的不工作到底是什么意思?你有错误吗?有没有可能是关于“模棱两可的名字”的问题?嗯,我不确定,但我想你们忘了一些括号:INSERT INTO table。。。选择从…起连接位置…不,我得到1054-未知列“table|old”。“WHERE子句”中的“role”不起作用:/1054-未知列“t1.id”在“field list”中选择*的结果是什么?从table_old limit 1?id | name|u 1 | name|u 2 | name| u 3 | role 1 | aaa | bbb | ccc | g我想我会在中使用UPDATE:/doesn不起作用:/1054-未知列“t1.id”“字段列表”从表中选择*的结果是什么?id | name | u 1 | name | u 2 | name | u 3 | role 1 | aaa | bbb | ccc | g我想我会使用更新:/