Left Join이 모든 행을 반환하지 않음: MySQL 쿼리 문제
MySQL에서는 일반적으로 LEFT JOIN 작업을 사용하여 두 테이블의 행을 결합합니다. 공통 키를 기반으로 합니다. 그러나 이 질문에 설명된 것과 같은 특정 시나리오에서는 쿼리가 예상한 모든 행을 반환하지 않을 수 있습니다.
쿼리 구조 및 문제
WHERE 원본 쿼리에서 볼 수 있듯이 절은 조인 조건에 직접 적용됩니다.
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
이 경우 WHERE 절은 pr7.field = 23인 행만 반환하도록 조인합니다. 결과적으로 값 23과 일치하는 pr7.field 항목이 없는 jos_hp_properties 테이블의 모든 행을 제외합니다. 이로 인해 쿼리가 예상보다 적은 수의 행을 반환하게 됩니다.
해결책: WHERE 조건 이동
문제를 해결하고 첫 번째 테이블의 모든 행이 반환되도록 하려면 다음과 같이 WHERE 조건을 JOIN의 ON 조건으로 이동해야 합니다.
SELECT pr.*, pr7.value AS `room_price_high` FROM `jos_hp_properties` pr LEFT JOIN `jos_hp_properties2` pr7 ON pr7.property=pr.id AND pr7.field=23
조건을 JOIN으로 이동하면 쿼리는 먼저 왼쪽을 설정합니다. 테이블 간 조인을 수행한 다음 지정된 기준에 따라 조인된 행을 필터링합니다. 이렇게 하면 pr7.field = 23인 jos_hp_properties2 테이블에 일치하는 항목이 있는지 여부에 관계없이 jos_hp_properties 테이블의 모든 행이 결과 집합에 포함됩니다.
위 내용은 내 MySQL LEFT JOIN이 모든 행을 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!