Проблемы с копированием данных из одной таблицы в другую через UPDATE и INSERT INTO - PullRequest
0 голосов
/ 27 июня 2011

У меня есть две таблицы, и мне нужно переместить данные из одной в другую.Я просто хочу переместить конкретные значения из первого столбца, т. Е. Если они = ni (varchar), в новый столбец во втором.

Поэтому я хотел бы выбрать данные nr ниже из таблицы lime_survey_56999

`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 - Неизвестный столбец '56999X159X3400' в 'IN / ALL / ANY subquery'

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 голосов
/ 27 июня 2011

вам не хватает пункта 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'

заменить ???? на соответствующие имена столбцов

...