SQL DELETE(이너 조인 포함)
.「 」spawnlist ★★★★★★★★★★★★★★★★★」npc는 이 spawnlsitnpc_templateid = n.idTemplate테이블을 "연결"할 수 있는 유일한 것입니다.이이대써써써써써봤돼돼돼돼돼돼돼돼 。
나는 이것을 시도해 보았다.
DELETE s FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
.*로로 합니다.s아, 아, 아, 아, 아, 아, 아, 네.
시험:
DELETE s.* FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
데이터베이스가 InnoDB일 경우 외부 키를 사용하여 삭제 시 캐스케이드를 사용하는 것이 더 나을 수 있습니다.이렇게 하면 원하는 대로 실행되어 중복 데이터가 저장되지 않습니다.
단, 이 예에서는 첫 번째 s는 필요 없다고 생각합니다.
DELETE s
FROM spawnlist AS s
INNER JOIN npc AS n ON s.npc_templateid = n.idTemplate
WHERE n.type = "monster";
삭제하기 전에 행을 선택하는 것이 좋을 수 있습니다.그러면, 다음의 항목을 확실히 삭제할 수 있습니다.
SELECT * FROM spawnlist
INNER JOIN npc ON spawnlist.npc_templateid = npc.idTemplate
WHERE npc.type = "monster";
MySQL 삭제 구문은 http://dev.mysql.com/doc/refman/5.0/en/delete.html에서도 확인할 수 있습니다.
데이터베이스가 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에 모두 할당했습니다만, 여기서는 양쪽 테이블을 join 키워드와 함께 링크했습니다.또한 링크를 만드는 양쪽 테이블의 프라이머리 키와 외부 키를 대조했습니다.마지막 줄에서는 삭제하기 위해 레코드를 필드별로 필터링했습니다.
언급URL : https://stackoverflow.com/questions/8598791/sql-delete-with-inner-join
'source' 카테고리의 다른 글
| Regex: InCombining Diacricic Marks란? (0) | 2022.11.02 |
|---|---|
| 올바른 구문은 MariaDB 서버 버전에 해당하는 매뉴얼을 참조하십시오. (0) | 2022.11.02 |
| Maria에 클러스터되지 않은 다른 인덱스가 추가된 경우 기본 키가 클러스터된 인덱스가 아닌 이유DB (0) | 2022.11.01 |
| Java에서 equals 및 hashCode를 덮어쓸 때 고려해야 할 문제는 무엇입니까? (0) | 2022.11.01 |
| pymysql.err.mariadb에 대한 단순 다중 행 SQL 쿼리의 ProgrammingError 1064 (0) | 2022.11.01 |