>데이터 베이스 >MySQL 튜토리얼 >내 SQL Left 조인이 모든 행 대신 하나의 행만 반환하는 이유는 무엇입니까?

내 SQL Left 조인이 모든 행 대신 하나의 행만 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-12 13:25:14218검색

Why Does My SQL Left Join Only Return One Row Instead of All Rows?

Left Join을 사용하여 모든 행을 반환하지 않는 SQL 쿼리

이 쿼리는 jos_hp_properties 테이블(pr로 줄여서)에서 모든 행을 검색하는 것을 목표로 합니다. jos_hp_properties2 테이블의 값(pr7로 축약됨)을 사용합니다. 여기서 field라는 필드는 다음과 같습니다. 후자의 표에서는 23입니다. 그러나 현재 쿼리는 27개의 행을 포함하는 jos_hp_properties 테이블에도 불구하고 단일 행만 반환합니다.

이 문제를 해결하려면 다음과 같이 WHERE 절을 JOIN 문으로 이동해야 합니다.

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

이 수정된 쿼리를 사용하면 WHERE 절이 더 이상 조인 이전의 결과 집합을 제한하지 않습니다. 대신, jos_hp_properties 테이블의 행은 필드 23에 대한 jos_hp_properties2 테이블에 해당 행이 없더라도 포함됩니다(이 경우 반환된 값은 NULL이 됩니다). 이렇게 하면 첫 번째 테이블의 모든 행이 해당되는 경우 두 번째 테이블의 원하는 데이터와 함께 반환됩니다.

위 내용은 내 SQL Left 조인이 모든 행 대신 하나의 행만 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.