2012-07-31 2 views
1

특정 값 (동적으로로드 됨)이 특정 값 인 경우에만 where 절을 실행하고 싶습니다. 예를 들어값이 'x'이면 MySQL은 where 절을 실행합니까?

IF ('<=' == '$dynamic_value') THEN WHERE...

이 가능합니까? ($ 동적 값은 < = 또는> =)

즉, 특정 값이 발생하거나 호출 될 때만 where 절을 사용하고 싶습니다. $dynamic_value'<='로 설정되어 있지 않으면

WHERE $dynamic_value <> '<=' OR <your-other-clause> 

그 방법의 <your-other-clause> 비트가 적용되지 않습니다 :

답변

2

당신은 그래서 같은 WHERE 절에 CASE 표현을 사용할 수 있습니다 $dynamic_value>= 또는 <= 중 하나 동일하지 않습니다

SELECT * 
FROM tbl 
WHERE 
    CASE '$dynamic_value' 
     WHEN '>=' THEN column_a >= column_b AND other_conditions 
     WHEN '<=' THEN column_a <= column_b AND other_conditions 
     ELSE 1 
    END 

경우, ELSE 1 대신 WHERE 절에 의해 사용됩니다 - 어떤 기본적으로 전혀 WHERE 절이없는 것과 같습니다 (모든 레코드를 반환합니다).

는 PHP를 사용하고 $dynamic_value의 값은 >= 또는 <= 될 수 것처럼 보이기 때문에, 당신은 단지 매개 변수를 삽입 할 수 있습니다 직접 원하는 : 사용자 입력에서 오는 물론

$sql = " 
    SELECT * 
    FROM tbl 
    WHERE column_a $dynamic_value column_b"; 

경우, $dynamic_value>= 또는 <=인지 확인해야합니다.

0

당신은 같은과 유사한 효과를 얻을 수 있습니다.

1

IF 조건이 아니라 일반적으로 WHERE의 부울 논리로 처리됩니다. 동적 가치를 AND 및 해당 조건과 일치시킵니다.

WHERE 
    ('$dynamic_value' = '<=' AND othercolumn = othercondition) 
    OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)