효율적인 데이터 검색: 여러 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!