【问题标题】:Problems copying data from one table to another via UPDATE and INSERT INTO通过 UPDATE 和 INSERT INTO 将数据从一个表复制到另一个表时出现问题
【发布时间】:2011-06-27 07:56:35
【问题描述】:

我有两张表,需要将数据从一张表移到另一张表。我只想将特定值从第一列移动,即如果它们 = 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 的所有列中,而不是它对应于第一个表中的条目的位置。

任何帮助将不胜感激!我一直在为此撕扯头发!

【问题讨论】:

  • _cube?对我来说看起来像一个 OLAP-db。您确定不想使用 OLAP 工具来完成这项工作吗?

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


【解决方案1】:

您的加入缺少 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'

将????替换为对应的列名

【讨论】:

  • 非常感谢...我试过了,它执行得很好,但没有更新任何列?!?
  • 您确定两个表之间的值不同吗?
  • 问题已解决 - 我已经完成了批量 INSERT INTO,然后将内容复制到新列中,并根据我设置的条件将不需要的单元格标记为 NULL - 再次感谢您的帮助: -)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2012-11-24
相关资源
最近更新 更多