通过UPDATE和INSERT INTO将数据从一个表复制到另一个表的问题

时间:2011-06-27 07:56:36

标签: mysql sql sql-update mysql-error-1242

我有两个表,需要将数据从一个移到另一个。我只是想从第一列移动特定值,即如果它们= ni(varchar)到第二列中的新列。

所以我想从表lime_survey_56999

中选择下面的nr数据
`id` `56999X159X3400`
1    2
2    6                  
3    nr
4    mi

将其移至新表lime_survey_56999_cube中,使其显示为

`id`  `External-Unique-Factors4NR`
1     NULL
2     NULL                  
3     nr
4     NULL

我无法使用INSERT INTO,因为lime_survey_56999_cube中已有数据,我需要它来匹配第一个表中的原始行。

以下是我的尝试及其结果/错误消息

UPDATE `lime_survey_56999_cube` set `lime_survey_56999_cube`.`External-Unique-Factors4NR` = (select `56999X159X3400` from `lime_survey_56999` where `56999X159X3400` = 'nr')

错误#1242 - 子查询返回超过1行

UPDATE `lime_survey_56999_cube` 
SET `External-Unique-Factors4NR` = 'nr'
WHERE `56999X159X3400` in (select `56999X159X3400` from `lime_survey_56999` where `56999X159X3400` = 'nr');

错误#1054 - “IN / ALL / ANY子查询”中的未知列“56999X159X3400”

UPDATE `lime_survey_56999_cube` 
INNER JOIN `lime_survey_56999` 
SET `lime_survey_56999_cube`.`External-Unique-Factors4NR` = `lime_survey_56999`.`56999X159X3400` 
WHERE `lime_survey_56999`.`56999X159X3400` = 'nr'

这只将nr放入External-Unique-Factors4NR的所有列中,而不是与第一个表中的条目对应的位置。

非常感谢任何帮助!我一直在扯掉头发!

1 个答案:

答案 0 :(得分:0)

您错过了加入的ON条款

UPDATE `lime_survey_56999_cube`
INNER JOIN `lime_survey_56999` 
ON `lime_survey_56999_cube`.???? = `lime_survey_56999`.????
SET `lime_survey_56999_cube`.`External-Unique-Factors4NR` = `lime_survey_56999`.`56999X159X3400` 
WHERE `lime_survey_56999`.`56999X159X3400` = 'nr'

????替换为相应的列名