데이터베이스가 InnoDB 인 경우 삭제시 조인을 수행 할 필요가 없습니다. 뿐
DELETE FROM spawnlist WHERE spawnlist.type = "monster";
다른 테이블의 외래 키와 연결된 모든 레코드를 삭제하는 데 사용할 수 있습니다. 이렇게하려면 디자인 타임에 먼저 테이블을 연결해야합니다.
CREATE TABLE IF NOT EXIST spawnlist (
npc_templateid VARCHAR(20) NOT NULL PRIMARY KEY
)ENGINE=InnoDB;
CREATE TABLE IF NOT EXIST npc (
idTemplate VARCHAR(20) NOT NULL,
FOREIGN KEY (idTemplate) REFERENCES spawnlist(npc_templateid) ON DELETE CASCADE
)ENGINE=InnoDB;
MyISAM을 사용하는 경우 이와 같이 결합하는 레코드를 삭제할 수 있습니다.
DELETE a,b
FROM `spawnlist` a
JOIN `npc` b
ON a.`npc_templateid` = b.`idTemplate`
WHERE a.`type` = 'monster';
첫 번째 줄에서는 레코드를 삭제하기 위해 두 개의 임시 테이블을 초기화했으며 두 번째 줄에서는 존재 테이블을 a와 b 모두에 할당했지만 여기서는 조인 키워드로 두 테이블을 함께 연결했으며 기본 및 외래 키를 일치 시켰습니다. 링크를 만드는 두 테이블에 대해 마지막 줄에서 삭제할 필드로 레코드를 필터링했습니다.