2010-04-14 3 views
4

나는 게시물이있는 데이터 테이블을 가지고 있으며 게시물을 삭제 한 데이터 테이블이있다. 게시물이 삭제 될 때 일어나는 일은 게시물 항목을 제거하지 않고 삭제 된 테이블에 ID가 추가된다는 것입니다.MySQL Select 문 where where table1.id! = table2.id

답변

2

, 당신이 할 수있는 가능한 경우 deleted_table에 가입) idNull (행이 없음을 의미)인지 확인하십시오.

Select everything_you_need 
From post_table p 
Left Join delete_table d On (d.id = p.id) 
Where d.id Is Null; 

은 최적의 성능을 위해 모두 id -columns에 인덱스가 있는지 확인하십시오.

2

이 그렇지 않은 게시물 테이블에 여분의 열을 추가하는 것이 더 쉽습니다 삭제 된 테이블에 자신의 ID를 가지고있는 사람을 선택하지 않고 게시물 테이블의 모든 게시물을 선택하는 깨끗하고 효율적인 방법이 무엇

및 저장소의 삭제 된 부울 값? 삭제 한 사람을 저장하려면 정수 필드 (사용자 ID를 나타 내기 위해)를 사용하고, 0은 삭제되지 않습니다. 당신이 bigstylee 알 수 있듯이 부울 플래그를 사용하지 않는 좋은 이유가있는 경우

+0

더 쉬울 지 모르지만 이것은 설계되지 않은 타사 인프라를위한 것이므로 핵심 구조를 변경할 수 없습니다. – Michael

1

, 당신은이 하위 쿼리를 EXISTS 사용할 수 있습니다하십시오 Left Join (당신이 당신의 테이블을 변경할 수없는 경우

SELECT * FROM table1 
    WHERE NOT EXISTS 
    (SELECT * FROM table2 WHERE table1.id=table2.id); 
+1

이 작업은 가능하지만 간단한 왼쪽 조인은 subselect를 수행하는 것보다 훨씬 쉽습니다. – oezi

+0

나는 동의하지 않는다. 이것은 실제로 당신이하는 것을 진술 한 것처럼 훨씬 더 명확하고 읽을 수있는 것 같습니다. 이 간단한 예제에서 MySQL은 같은 것을 최적화합니다. – Tomas

관련 문제