>데이터 베이스 >MySQL 튜토리얼 >내 MySQL LEFT JOIN이 기본 테이블의 모든 행 대신 하나의 행만 반환하는 이유는 무엇입니까?

내 MySQL LEFT JOIN이 기본 테이블의 모든 행 대신 하나의 행만 반환하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-28 06:01:13419검색

Why Does My MySQL LEFT JOIN Only Return One Row Instead of All Rows from the Primary Table?

Left Join이 모든 행을 반환하지 않음

원래 질문:

A MySQL 쿼리 왼쪽 외부 조인은 기본 테이블의 모든 행 대신 하나의 행만 반환합니다. 조인 조건에는 보조 테이블의 필드에 대한 필터가 포함됩니다. 필드가 필터 기준을 충족하는 보조 테이블의 값을 포함하여 기본 테이블의 모든 행을 선택하려면 어떻게 해야 합니까?

해결책:

문제는 다음에서 비롯됩니다. JOIN 뒤에 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 조건은 더 이상 JOIN 뒤의 ​​별도 WHERE 절에 없습니다. 대신 JOIN의 ON 절에 통합되어 pr7.field가 23인 행만 조인되도록 했습니다. 이렇게 하면 jos_hp_properties2에 일치하지 않는 행을 포함하여 jos_hp_properties의 모든 행을 선택할 수 있습니다. 이 행은 pr7.value에 대해 NULL 값을 갖게 됩니다.

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

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