JOIN 조건에 CASE 문을 사용할 수 있나요?
sys.allocation_units
테이블의 열 값을 기준으로 테이블을 조인하려고 하면 다음 코드에서 구문 오류가 발생합니다.
<code class="language-sql">SELECT * FROM sys.indexes i JOIN sys.partitions p ON i.index_id = p.index_id JOIN sys.allocation_units a ON CASE WHEN a.type IN (1, 3) THEN a.container_id = p.hobt_id WHEN a.type IN (2) THEN a.container_id = p.partition_id END </code>
오류 이유 설명:
CASE 표현식은 동등 표현식이 아닌 단일 값을 반환합니다. 이 예에서는 조건이 참인지 확인하기 위해 CASE 표현식의 결과를 상수(예: 1)와 비교해야 합니다.
수정된 코드:
<code class="language-sql">SELECT * FROM sys.indexes i JOIN sys.partitions p ON i.index_id = p.index_id JOIN sys.allocation_units a ON CASE WHEN a.type IN (1, 3) AND a.container_id = p.hobt_id THEN 1 WHEN a.type IN (2) AND a.container_id = p.partition_id THEN 1 ELSE 0 END = 1</code>
CASE 표현식의 결과를 1과 비교하여 조건이 true인 행을 반환하는 코드입니다.
위 내용은 JOIN 조건에 CASE 문을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!