[SQL] 가입 INNER와 DELETE SQL은
SQL가입 INNER와 DELETE SQL은
이 두 테이블, spawnlist 및 NPC가 있고, 나는 spawnlsit에서 데이터를 삭제해야합니다. npc_templateid = n.idTemplate 테이블을 "연결"하는 유일한 방법입니다. 나는이 스크립트를 시도했지만 작동하지 않습니다.
나는이 시도했다 :
DELETE s FROM spawnlist s
INNER JOIN npc n ON s.npc_templateid = n.idTemplate
WHERE (n.type = "monster");
해결법
-
==============================
1.추가합니다. * s의 첫 번째 줄에.
추가합니다. * s의 첫 번째 줄에.
시험:
DELETE s.* FROM spawnlist s INNER JOIN npc n ON s.npc_templateid = n.idTemplate WHERE (n.type = "monster");
-
==============================
2.데이터베이스가 이노 인 경우 다음이 당신이 원하는 것을 할 것 삭제에 외래 키와 폭포를 사용하고 또한 중복되는 데이터가 저장되지 당할 위험이 더 좋은 생각이 될 수 있습니다.
데이터베이스가 이노 인 경우 다음이 당신이 원하는 것을 할 것 삭제에 외래 키와 폭포를 사용하고 또한 중복되는 데이터가 저장되지 당할 위험이 더 좋은 생각이 될 수 있습니다.
이 예를 들어,하지만 난 당신이 첫번째들 필요가 있다고 생각하지 않습니다 :
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
-
==============================
3.데이터베이스가 InnoDB의 경우, 당신은 할 필요가 삭제 조인니까. 뿐
데이터베이스가 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';
첫 번째 줄에 내가 delet 기록을 위해 두 개의 임시 테이블을 초기화 한 두 번째 줄에 내가 모두 a와 b에 실존 테이블을 할당하지만, 여기에 내가 키워드에 가입과 함께 두 테이블을 연결 한 그리고 난, 링크를 만들 두 테이블의 기본 키와 외래 키를 일치 한 마지막 줄에 내가 삭제할 필드를 기준으로 레코드를 필터링했다.
from https://stackoverflow.com/questions/8598791/sql-delete-with-inner-join by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] ORA-00972 너무 오래 별칭 열 이름 식별자 (0) | 2020.06.05 |
---|---|
[SQL] SqlConnectionStringBuilder를 사용하여 연결 문자열에서 데이터베이스 이름을 얻는 방법 (0) | 2020.06.05 |
[SQL] 3 개 테이블과 조인 Laravel (0) | 2020.06.05 |
[SQL] 오류 코드 :와 1055 호환되지 않는 sql_mode = ONLY_FULL_GROUP_BY (0) | 2020.06.05 |
[SQL] CSV에서 SQL 대량 가져 오기 (0) | 2020.06.05 |