'status'라는 필드와 관련된 두 개의 테이블이 있습니다. table2.location의 값이 'texas'인 경우 table2.status의 인스턴스가 'good'인 20 개의 인스턴스가 있습니다.SQL LEFT JOIN 및 예상치 못한 결과가 발생합니다.
즉, 다음 쿼리는 table2.status = 'good'의 20 행을 반환합니다.
[A] SELECT table2.status FROM table2 WHERE table2.location = 'texas';
또한 고유 한 table1.id에는 table1.status = 'good'이 있습니다.
즉, 다음 쿼리는 50 개의 고유 한 table1.id 행을 반환합니다. 이제
[B] SELECT table1.id FROM table1 WHERE table1.status = 'good';
, 나는 다음과 같은 쿼리를 실행할 때 :
[C] SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.status = table2.status WHERE table2.location = "texas";
나는 고유 ID 년대의 50 개 행을 반환 할 것으로 예상합니다. 그러나 실제로 고유 한 ID 20 번 50 행을 반환합니다 (즉, 반환 된 1000 행을 가져옵니다).
간단히 말해서 SELECT DISTINCT table1.id ...를 실행하면 50 행 (50 행 20 세트가 아닌)의 집합이 반환됩니다.
그러나 나는 왜 내가이 행동을보고 있는지 알고 싶습니다. 내 질문 [C]에 문제가있을 수 있습니다.
감사합니다.