집 >데이터 베이스 >MySQL 튜토리얼 >조건부 필터링을 위해 SQL WHERE 절에서 CASE 문을 어떻게 사용할 수 있습니까?
쿼리문:
다음 쿼리는 WHERE 절의 CASE 문을 사용하여 @locationType 및 @locationID 값을 기준으로 필터링하려고 시도합니다.
<code class="language-sql">declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE CASE @locationType WHEN 'location' THEN account_location = @locationID WHEN 'area' THEN xxx_location_area = @locationID WHEN 'division' THEN xxx_location_division = @locationID END;</code>
오류:
CASE 표현식은 단일 반환 값을 기대하므로 이 쿼리에서는 구문 오류가 발생합니다. 다양한 WHEN 절에 CASE 표현식이 아닌 동등 비교(= @locationID)가 잘못 포함되었습니다.
해결책:
WHERE 절에서 CASE 문을 사용하는 올바른 구문은 대상 열에 표현식을 할당하는 것입니다.
<code class="language-sql">declare @locationType varchar(50); declare @locationID int; SELECT column1, column2 FROM viewWhatever WHERE @locationID = CASE @locationType WHEN 'location' THEN account_location WHEN 'area' THEN xxx_location_area WHEN 'division' THEN xxx_location_division END;</code>
이 수정된 쿼리에서 CASE 표현식은 @locationType 값을 기반으로 해당 위치 식별자를 반환합니다. 그런 다음 WHERE 절은 이 값을 @locationID와 비교하여 예상대로 결과를 필터링합니다.
위 내용은 조건부 필터링을 위해 SQL WHERE 절에서 CASE 문을 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!