> 데이터 베이스 > MySQL 튜토리얼 > 단일 SQL 쿼리에서 여러 WHERE 절과 같은 조건을 효율적으로 결합하려면 어떻게 해야 합니까?

단일 SQL 쿼리에서 여러 WHERE 절과 같은 조건을 효율적으로 결합하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2025-01-21 12:53:09
원래의
287명이 탐색했습니다.

How Can I Efficiently Combine Multiple WHERE Clause-like Conditions in a Single SQL Query?

효율적인 데이터 검색: 여러 WHERE 조건을 교묘하게 결합

두 가지 서로 다른 조건 집합을 기반으로 테이블에서 데이터를 검색해야 한다고 가정해 보겠습니다. 예를 들어, 재무 운영을 기록하고 "account_id", "budget_id", "points" 및 "type"과 같은 열을 포함하는 "transactions"라는 테이블을 생각해 보세요.

이 테이블에서 특정 데이터를 효율적으로 검색하려면 여러 WHERE 절을 결합해야 할 수도 있습니다. 예를 들어, 테이블의 각 고유 "budget_id"에 대해 할당되고 발급된 총 포인트를 확인해야 할 수 있습니다.

쿼리 아이디어

작성해야 하는 쿼리는 다음과 같아야 합니다.

SELECT budget_id, 
       SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated,
       SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued
FROM transactions
GROUP BY budget_id
로그인 후 복사

이 쿼리의 각 구성 요소를 자세히 살펴보고 목표 달성 방법을 이해해 보겠습니다.

SUM(CASE WHEN ... THEN ... ELSE ... END) 함수:

이 함수는 지정된 "유형"을 기준으로 "점수" 열을 조건부로 합산하는 데 사용됩니다. "type"이 "allocation"인 경우 이 조건을 만족하는 모든 행에 대해 "점수"의 합계를 계산합니다. 마찬가지로 "유형"이 "문제"와 동일한 행에 대한 "점"의 합계를 계산합니다. (여기서는 코드 가독성과 호환성을 향상시키기 위해 IF 함수를 좀 더 표준적인 CASE WHEN 함수로 대체했습니다.)

예산_ID별 그룹:

이 절은 검색된 데이터를 "예산_ID" 열을 기준으로 그룹화합니다. 따라서 쿼리는 테이블의 각 고유 "budget_id"에 대해 별도의 결과 행을 제공합니다.

WHERE 절 조합:

필요한 필터링이 SUM() 함수 내에서 수행되므로 이 쿼리에는 WHERE 절이 눈에 띄게 누락되어 있습니다. 특히 이 함수에는 "유형" 열을 기준으로 행을 선택적으로 포함하는 조건이 포함되어 있습니다.

예상 출력:

작성한 쿼리는 "예산_ID", "할당" 및 "발행" 열이 포함된 테이블을 출력합니다. "allocation" 열은 각 "budget_id"의 ​​"allocation" 거래와 관련된 포인트의 합을 나타내고, "issued" 열은 해당 "budget_id"의 ​​"발행" 거래의 누적 포인트를 나타낸다.

위 내용은 단일 SQL 쿼리에서 여러 WHERE 절과 같은 조건을 효율적으로 결합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿