> 데이터 베이스 > MySQL 튜토리얼 > SQL Server JOIN 조건에서 CASE 문을 효과적으로 사용하려면 어떻게 해야 합니까?

SQL Server JOIN 조건에서 CASE 문을 효과적으로 사용하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-20 07:27:10
원래의
226명이 탐색했습니다.

How Can I Use CASE Statements Effectively in SQL Server JOIN Conditions?

SQL Server JOIN에서 CASE 문 활용

SQL Server JOIN 조건 내에서 CASE 문을 사용하는 것은 까다로울 수 있습니다. JOIN 절에 CASE 문을 직접 사용하면 "'=' 근처의 구문이 잘못되었습니다."와 같은 구문 오류가 발생하는 경우가 많습니다.

구문 오류 이해

이 오류는 CASE 문이 부울 true/false 결과가 아닌 스칼라 값을 생성하기 때문에 발생합니다. 그러나 JOIN 조건에서는 행 조인 여부를 결정하기 위해 부울 식이 필요합니다. 비교가 없는 단순한 CASE 문은 이러한 요구를 충족시키지 않습니다.

올바른 접근 방식

해결책에는 부울 값(또는 부울과 쉽게 비교할 수 있는 값)을 출력하도록 CASE 문을 설계하는 것이 포함됩니다. 그런 다음 이 출력을 비교하여 조인을 제어하는 ​​데 사용합니다.

개선된 JOIN 조건의 예는 다음과 같습니다.

<code class="language-sql">ON CASE
   WHEN a.type IN (1, 3) THEN CASE WHEN a.container_id = p.hobt_id THEN 1 ELSE 0 END
   WHEN a.type IN (2) THEN CASE WHEN a.container_id = p.partition_id THEN 1 ELSE 0 END
   ELSE 0
   END = 1</code>
로그인 후 복사

이 수정된 문은 중첩된 CASE 문을 사용합니다. 내부 CASE 문은 조인 조건(예: a.container_id = p.hobt_id)이 충족되면 1을 반환하고 그렇지 않으면 0을 반환합니다. 그런 다음 외부 CASE 문은 이러한 결과를 결합합니다. 최종 비교(= 1)는 중첩된 CASE 문 내의 조건이 true인 경우에만 행이 조인되도록 합니다.

이 방법을 사용하면 JOIN 조건 내에서 CASE 문을 효과적으로 사용하여 특정 기준에 따라 행을 조건부 조인할 수 있습니다.

위 내용은 SQL Server JOIN 조건에서 CASE 문을 효과적으로 사용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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