2015. 9. 11. 16:34 IT/MySQL
mysql JOIN DELETE
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
JOIN DELETE (Multiple-table Delete)
두개의 테이블을 조인하여 UPDATE를 실행하는 것(JOIN UPDATE)과 같이,
두개의 테이블을 조인하여 그 결과 레코드를 삭제하는 것도 가능하다.
이를 JOIN DELETE 또는 Multiple-Table DELETE라고 하는데,
JOIN DELETE는 아래 두 가지 문법으로 작성할 수 있다.
- DELETE와 FROM 절 사이에 삭제할 테이블 명시
DELETE t1, t2
FROM test1 t1 INNER JOIN test2 t2 INNER JOIN test3 t3
WHERE t1.id=t2.id
AND t2.id=t3.id;
- FROM과 USING 절 사이에 삭제할 테이블 명시
DELETE
FROM t1, t2
USING test1 t1 INNER JOIN test2 t2 INNER JOIN test3 t3
WHERE t1.id=t2.id
AND t2.id=t3.id;
JOIN DELETE에서도 주의해야 할 사항이 있는데,
- 조인 결과 레코드가 삭제되는 테이블이 어느 테이블인가 ?.
- 첫번째 문법에서는 DELETE 키워드와 FROM 절 사이에 명시된 테이블의 레코드만 삭제한다.
- 두번째 문법에서는 FROM 절과 USING 절 사이에 명시된 테이블의 레코드만 삭제한다.
- 위의 두 예제에서는 t1(test1) 테이블과 t2(test2) 테이블의 레코드만 삭제하게 된다. t3(test3)의 레코드는 조인에만 참여하고 삭제되지는 않는다.
- 테이블의 별명(Alias)는 어디에서 정의해야 하는가 ?.
- 첫번째 문법에서는 FROM 절 이하에서 테이블의 별명(Alias)를 지정하며, 이 이외의 위치에서는 Alias를 지정할 수 없고, FROM 절에서 정의된 Alias를 사용만 해야 한다.
- 두번째 문법에서는 USING 절 이하에서만 테이블의 별명(Alias)를 정의해야 한다.
'IT > MySQL' 카테고리의 다른 글
MySQL 커버링 인덱스 (0) | 2015.10.16 |
---|---|
MySQL 설치 및 권한 관리. (0) | 2015.10.01 |
MySQL DB 생성 및 사용자 추가, 권한 부여 (0) | 2015.09.08 |
Mysql Join 속도 측정 및 개선 (0) | 2015.07.22 |
mysql table 권한 관리 (0) | 2015.07.09 |