>데이터 베이스 >MySQL 튜토리얼 >선택적 외부 조인을 사용하여 여러 MySQL 테이블에서 데이터를 검색하고 NULL 값을 처리하는 방법은 무엇입니까?

선택적 외부 조인을 사용하여 여러 MySQL 테이블에서 데이터를 검색하고 NULL 값을 처리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-21 15:34:10169검색

How to Retrieve Data from Multiple MySQL Tables Using Optional Outer Joins and Handle NULL Values?

MySQL에서 선택적 외부 조인을 사용하여 여러 테이블에서 데이터 검색

여러 테이블에서 데이터를 쿼리할 때 모두가 그렇지 않은 상황에 직면하는 것이 일반적입니다. 한 테이블의 행에는 다른 테이블의 해당 행이 있습니다. 이러한 경우 누락된 데이터를 자리 표시자로 채우면서 하나의 테이블에서 모든 행을 검색하는 것이 바람직합니다.

다음 시나리오를 고려해보세요. 테이블이 두 개 있는데, 하나는 카테고리("카테고리"라는 제목)용이고 다른 하나는 제품용입니다. (제목: "제품"). "products" 테이블에는 "categories" 테이블의 "id" 열을 참조하는 "ownerid" 열이 있습니다.

예제 쿼리

모든 카테고리를 선택하고 각각의 최소 및 최대 가격을 알아보려면 다음 쿼리를 사용할 수 있습니다.

SELECT
    sc.*,
    MIN(s.price) AS minp,
    MAX(s.price) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

외부 Join

여기서 중요한 수정 사항은 LEFT JOIN 문을 사용하는 것입니다. 조인 조건을 충족하는 행만 반환하는 INNER JOIN과 달리 OUTER JOIN은 왼쪽 테이블(이 경우 "범주")의 모든 행을 반환하고 오른쪽 테이블("제품")에서 누락된 값을 NULL로 채웁니다. .

NULL 값 처리

그러나 NULL 값은 다음과 같을 수 있습니다. 특정 시나리오에서는 바람직하지 않습니다. 제품이 없는 카테고리에 대해 NULL 대신 기본값(예: 0)을 반환하려면 IFNULL 함수를 사용할 수 있습니다.

SELECT
    sc.*,
    IFNULL(MIN(s.price), 0) AS minp,
    IFNULL(MAX(s.price), 0) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

고려사항

마지막으로, 애플리케이션의 특정 요구 사항에 따라 누락된 데이터에 대해 NULL을 사용할지 아니면 기본값을 사용할지 결정하는 것이 중요합니다. Null 값은 실제로 데이터가 없음을 나타내고 기본값은 가정된 데이터를 나타냅니다. 데이터 무결성을 유지하려면 이러한 차이점을 이해하는 것이 중요합니다.

위 내용은 선택적 외부 조인을 사용하여 여러 MySQL 테이블에서 데이터를 검색하고 NULL 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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