문제

예를 들어 한다고 가정해 봅시:

  • 나는 두 개의 테이블: old_datanew_data.

  • 모두 old_datanew_data 하나 열 this_is_col.

  • 모두 old_datanew_data 러(수백)의 행날짜(2010-02-06,2010-01-09,2007-06-02,etc.).두 테이블이 필요 없어요 하지만 그들은 모두 동일한 형식입니다.

  • 필드 모두의 테이블은 다양한 정수입니다.


나의 작업:

  • 복사 분야에서 old_data 하기 new_data.

  • 면 날짜가 모두 존재하는 테이블,테이블 분야에서 new_data 대체될 것입니다.

  • 면 날짜에 존재하지 않는 new_data, 다음,올바른 행이 추가되고 현장 복사합니다.


여기에 내가 얼마나 멀리 왔:

을 만들 임시의 열:

ALTER TABLE `new_data` ADD `tempColumn` TEXT NULL;

데이터 복사 old_data:

INSERT INTO `new_data` (`tempColumn`) SELECT `this_is_col` FROM `old_data`;

결합 임시 열고 new_data . this_is_col.(I 하지 않은 정말 생각 단계이기 때문에 내가 못이 멀).

MERGE? `tempColumn` `this_is_col`;

임시 삭제 테이블

ALTER TABLE `new_data` DROP `tempColumn`;

에 따라 수행의 두 번째 작업(을 통한 데이터 전송하는 임시 컬럼)나는 이 오류가 발생할 수 있습니다.

#1062 - Duplicate entry '0000-00-00' for key 1

지금 내가 붙어 있습니다.어떤 도움을 감사하겠습니다.내가 사용하여 MySQL and phpMyAdmin 을 테스트하는 SQL 명령입니다.

도움이 되었습니까?

해결책

가정 날짜가 색인으로 독특한 키:

INSERT INTO newtable
SELECT *
FROM oldtable
ON DUPLICATE KEY column1=oldcolumn1, ...

다른 팁

INSERT...에 중복된 키트.귀하의 솔루션은 이미 만족 단계 1,3 의 작업에 중복된 키 업데이트로 돌 2 단계.

삭제하려면 행 첫째,업데이트하는 대신: 대체

그것은 단지 한 줄도:대체 데이터를 선택하지 않을 것이 이상한 것들과 함께 추가 텍스트 컬럼입니다.

는 방법에 대해 수행 UPDATEINSERT?

UPDATE new_data SET col=col 
FROM new_data a join old_data b on a.this_is_col = b.this_is_col

다음

INSERT INTO new_data (cols) SELECT cols 
FROM old_data WHERE this_is_col NOT IN (SELECT this_is_col FROM new_data)

지 않는 한 나는 오해...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top