필자가 발견 한 예제는 내 경우에는 없습니다. 저는 2 개의 테이블을 가지고 있습니다 :JOIN 문을 사용하여 테이블에서 삭제하는 방법은 무엇입니까?
items
cat_id
; catalog
id
와 나는 catalog
에없는 그 items
에서 모든 레코드를 삭제하고 싶습니다.
감사합니다. 다른 답변에서 설명과 같이 왼쪽을 사용하여 삭제할 수 있습니다
필자가 발견 한 예제는 내 경우에는 없습니다. 저는 2 개의 테이블을 가지고 있습니다 :JOIN 문을 사용하여 테이블에서 삭제하는 방법은 무엇입니까?
items
cat_id
; catalog
id
와 나는 catalog
에없는 그 items
에서 모든 레코드를 삭제하고 싶습니다.
감사합니다. 다른 답변에서 설명과 같이 왼쪽을 사용하여 삭제할 수 있습니다
delete i
from items i
left join catalog c on c.id = i.cat_id
where c.id is null
가입, 그러나 이것은 단지뿐만 아니라 작동하고 항상 삭제 문에서 구성 조인 왼쪽을 지원하지 않는 다른 데이터베이스에 더 휴대용입니다. 당신은 적절한 외래 키 제약 조건이 있다면 그런데
delete from items
where cat_id not in (select id from catalog)
,이 항목이 존재하지 않는 카테고리를 참조 존재 할 수없는 것이다. 나는 당신이 그 제약 조건을 제자리에 두는 것을 고려해야한다고 생각합니다.
DELETE FROM items i
LEFT JOIN catalog c ON i.cat_id = c.id
WHERE c.id IS NULL;
예를 들면? 예를 들어, 공식 매뉴얼에있는 것들은 일반적으로 매력처럼 작동합니다. – fancyPants