2011-03-25 4 views
0
table1 
id, name, desc 

1, Abc, some desc 
2, Def, more desc 
4, Jkl, another desc 

table2 
id, table1_id, title 
1, 1, My title 
2, 1, Another title 
3, 3, Yet another title 

표 1에는 ID가 3 인 행이 누락되었습니다. 그러나 눈치 채면 table2에는이 누락 된 ID에 대한 참조가 하나 있습니다. 그래서 내 질문에 어떻게 table1_id (들)에 더 이상 table1_adailabe에 대한 참조를 가지고 table2의 모든 행을 선택합니까 ?? ... SELECT B표 B의 표 A에 속하는 누락 된 표 행을 선택하려면 어떻게합니까?

나는 MySQL의 쿼리에서 아주 좋은 아니에요과 같은 것을 시도했다. * INNER가 b.table1_id의 표 A를 가입 b를 표 2로부터! = a.id 및 일부 다른하지만 ​​원하는 결과를 얻을 수 없었다 .

어떻게 달성 할 수 있습니까? 감사 a.id가 null 인 상태로

답변

3
SELECT b.* 
FROM table2 b 
LEFT JOIN table1 a ON b.table1_id = a.id 
WHERE a.id is null 

INNER에서 LEFT OUTER에 그냥 몇 가지 사소한 변경은, (일치는 표 A에서 찾을 수 없습니다).

삭제를 들어

사용

DELETE FROM table2 
WHERE table1_id not in (select id from table1) 
+0

@cyberwiki가'가입 둘 수 없습니다 및 WHERE'가 오른쪽으로 JOIN 대체? – diEcho

+0

@diEcho 일치하는 것을 제거해야합니다. 오른쪽 및 왼쪽은 테이블을 배치하는 위치에 따라 다릅니다. – RichardTheKiwi

+0

@cyberwiki .. 위대한 그것은 내가 요청한대로 작동합니다. 고맙습니다. :) – Kay