Проблеми при копиране на данни от една таблица в друга чрез UPDATE и INSERT INTO

Имам две таблици и трябва да преместя данни от едната в другата. Просто искам да преместя конкретни стойности от първата колона, т.е. ако те = 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, а не там, където съответства на записа в първата таблица.

Всяка помощ ще бъде много оценявана! Скубех косата си заради това!


person Bruce    schedule 27.06.2011    source източник
comment
_cube? изглежда ми като OLAP-db. сигурни ли сте, че не искате да използвате OLAP инструменти за работата?   -  person knittl    schedule 27.06.2011


Отговори (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'

заменете ???? със съответните имена на колони

person knittl    schedule 27.06.2011
comment
много благодаря за това... Опитах го и се изпълни добре, но няма актуализирани колони?!? - person Bruce; 27.06.2011
comment
сигурни ли сте, че стойностите са различни между двете таблици? - person knittl; 27.06.2011
comment
Проблемът е разрешен - направих групово INSERT INTO и след това копирах нещата в новите колони и маркирах ненужните клетки като NULL въз основа на условията, които зададох - все пак благодаря отново за помощта ви :-) - person Bruce; 27.06.2011