MySQL 데이터베이스에서 다른 테이블에 두 개의 열 외래 키 인 concept
을 통합하는 새로운 closure
테이블 (closure_new
)을 만들어야합니다. 즉 closure_new
에 closure
이 아닌 행을 추가하는 것입니다. 어떻게 이것을 달성하기 위해 SQL을 설정합니까? 내 첫 번째 시도는 subtypeId/subtype_effectiveTime
를 해결하고 완전히 해결하지 않을 수 있습니다동일한 테이블의 두 개의 복합 키
INSERT INTO `closure_new`
SELECT o.subtypeId, d.id, d.effectiveTime
FROM concept d
JOIN closure o
ON o.subtypeId = d.id;
참고 :
여기 closure_new
을 채우는 코드에서 내 첫 번째 시도이다. SQL은 또한 supertypeId/supertype_effectiveTime
을 통합해야합니다. 어떻게 각 subtypeId
각 supertypeId
와 관련된 effectiveTime
값을 각각 기록과 closure_new
테이블을 채울 수있는 SQL을 작성하려면 어떻게해야합니까?
CREATE TABLE `closure` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`subtypeId` BIGINT(20) NOT NULL ,
`supertypeId` BIGINT(20) NOT NULL ,
PRIMARY KEY (`id`)
);
내가 위 쓰기 시작 스크립트로 채워해야하는 closure_new
테이블 : 여기
CREATE TABLE `concept` (
`id` BIGINT NOT NULL DEFAULT 0,
`effectiveTime` VARCHAR(8) NOT NULL DEFAULT '',
`some other fields`,
PRIMARY KEY (`id`,`effectiveTime`)
) ENGINE=InnoDB;
이전 closure
테이블 : 여기
concept
테이블 :
CREATE TABLE `closure_new` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`subtypeId` BIGINT(20) NOT NULL ,
`subtype_effectiveTime` VARCHAR(8) NOT NULL DEFAULT '',
`supertypeId` BIGINT(20) NOT NULL ,
`supertype_effectiveTime` VARCHAR(8) NOT NULL DEFAULT '',
FOREIGN KEY (`supertypeId`, `supertype_effectiveTime`) references concept(`id`, `effectiveTime`),
FOREIGN KEY (`subtypeId`, `subtype_effectiveTime`) references concept(`id`, `effectiveTime`)
); ENGINE=InnoDB;
도와 주셔서 감사합니다. 다른 응답자의 코드를 실행하고 MySQL 명령 행 클라이언트를 종료하고 시스템을 재부팅하여 중지 시키려면 7 천만 개가 넘는 행을 새 테이블에 추가했습니다. 그 결과 윈도우는 더 이상 MySQL 윈도우 서비스를 시작하지 않을 것이고, 윈도우 서비스가 다시 시작될 때까지 내 개발 프로젝트를 종료합니다. 나는 이것을 또 다른 질문으로 올렸다. 기꺼이 도와 줄 수있어? 여기에 링크가 있습니다 : http://stackoverflow.com/questions/23816585/drop-table-in-mysql-from-outside – CodeMed
Crikey! 일단 서버를 다시 시작했다면 위의 방법을 시도해 보시기 바랍니다. 그러나 전체'Insert' 명령을 실행하기 전에, Select 절이'select count (*)'로 시도해 어떤 일이 일어나는지보십시오. – Chrisky
위의 코드를 실행하여 31 분 안에 예상되는 수의 새 행을 만들었습니다. 나는 이것을 대답으로 표시하고있다. 고맙습니다. +1. – CodeMed