을 결합한 두 개의 열을 함께서는 별도의 테이블
-
17-09-2020 - |
문제
예를 들어 한다고 가정해 봅시:
나는 두 개의 테이블: old_data 고 new_data.
모두 old_data 고 new_data 하나 열 this_is_col.
모두 old_data 고 new_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 단계.
삭제하려면 행 첫째,업데이트하는 대신: 대체
그것은 단지 한 줄도:대체 데이터를 선택하지 않을 것이 이상한 것들과 함께 추가 텍스트 컬럼입니다.
는 방법에 대해 수행 UPDATE
고 INSERT
?
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)
지 않는 한 나는 오해...