MySQL Left Join의 Null 행 문제 해결
MySQL에서 Left Join 쿼리를 실행할 때 다음과 같은 문제가 발생하는 것이 일반적입니다. 왼쪽 테이블의 모든 행이 반환되지 않는 시나리오입니다. 이 문제는 ON 절 대신 WHERE 절에 조인 조건이 지정된 경우 발생합니다.
jos_hp_properties(pr) 및 jos_hp_properties2(pr7) 테이블을 조인하는 다음 쿼리를 고려하십시오.
SELECT pr.*, pr7.value AS `room_price_high` FROM `jos_hp_properties` pr LEFT OUTER JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id WHERE pr7.field=23
사용자가 언급했듯이 이 쿼리는 테이블에 27개 행이 있음에도 불구하고 첫 번째 테이블에서 한 행만 반환합니다. jos_hp_properties 테이블. 그 이유는 WHERE 조건 pr7.field=23이 jos_hp_properties2 테이블에서 일치하는 필드 값 23이 없는 jos_hp_properties의 모든 행을 필터링하기 때문입니다.
이 문제를 해결하고 다음에서 모든 행을 검색하려면 두 번째 테이블의 room_price_high 값을 포함하는 첫 번째 테이블(또는 일치하는 필드가 없는 경우 NULL), WHERE 조건은 왼쪽 조인의 ON 절:
SELECT pr.*, pr7.value AS `room_price_high` FROM `jos_hp_properties` pr LEFT OUTER JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23
ON 절에 조인 조건을 배치하면 왼쪽 조인은 jos_hp_properties 테이블의 모든 행을 유지하고 일치하는 필드 값을 기준으로 jos_hp_properties2 테이블만 필터링합니다. 이렇게 하면 두 번째 테이블에 해당 행이 없는 경우에도 첫 번째 테이블의 모든 행이 반환됩니다.
위 내용은 내 MySQL LEFT JOIN 쿼리가 예상보다 적은 수의 행을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!