2013-07-04 4 views
-4

필자가 발견 한 예제는 내 경우에는 없습니다. 저는 2 개의 테이블을 가지고 있습니다 :JOIN 문을 사용하여 테이블에서 삭제하는 방법은 무엇입니까?

itemscat_id; catalog

id와 나는 catalog에없는 그 items에서 모든 레코드를 삭제하고 싶습니다.

감사합니다. 다른 답변에서 설명과 같이 왼쪽을 사용하여 삭제할 수 있습니다

+3

예를 들면? 예를 들어, 공식 매뉴얼에있는 것들은 일반적으로 매력처럼 작동합니다. – fancyPants

답변

4
delete i 
from items i 
left join catalog c on c.id = i.cat_id 
where c.id is null 
2

가입, 그러나 이것은 단지뿐만 아니라 작동하고 항상 삭제 문에서 구성 조인 왼쪽을 지원하지 않는 다른 데이터베이스에 더 휴대용입니다. 당신은 적절한 외래 키 제약 조건이 있다면 그런데

delete from items 
where cat_id not in (select id from catalog) 

,이 항목이 존재하지 않는 카테고리를 참조 존재 할 수없는 것이다. 나는 당신이 그 제약 조건을 제자리에 두는 것을 고려해야한다고 생각합니다.

1
DELETE FROM items i 
LEFT JOIN catalog c ON i.cat_id = c.id 
WHERE c.id IS NULL; 
관련 문제