我想要做的只是在某個值(將被動態加載)=某個值時才運行where子句。例如如果value ='x',Mysql運行where子句?
IF ('<=' == '$dynamic_value') THEN WHERE...
這可能嗎? ($動態值將是< =,或> =)
換句話說,我只想在某些值發生或調用時使用where子句。
我想要做的只是在某個值(將被動態加載)=某個值時才運行where子句。例如如果value ='x',Mysql運行where子句?
IF ('<=' == '$dynamic_value') THEN WHERE...
這可能嗎? ($動態值將是< =,或> =)
換句話說,我只想在某些值發生或調用時使用where子句。
可以使用CASE
表達WHERE
子句中像這樣:
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
如果$dynamic_value
不等於或者>=
或<=
,所述ELSE 1
將由WHERE
子句中使用代替 - 這基本上就像根本沒有WHERE
條款(並返回所有記錄)。
因爲它看起來像你正在使用PHP和$dynamic_value
值只能是>=
或<=
,你可以插入參數直接想:
$sql = "
SELECT *
FROM tbl
WHERE column_a $dynamic_value column_b";
當然,如果從用戶輸入的到來,那麼一定要檢查$dynamic_value
是否爲>=
或<=
。
您也可以達到類似的效果與類似:
WHERE $dynamic_value <> '<=' OR <your-other-clause>
這樣一來,除非$dynamic_value
設置爲'<='
的<your-other-clause>
位不會有任何效果。
而不是IF
條件,這通常用WHERE
中的布爾邏輯處理。將您的動態值與其相應的條件一起與AND
匹配。
WHERE
('$dynamic_value' = '<=' AND othercolumn = othercondition)
OR ('$dynamic_value' = '>=' AND othercolumn = someothercondition)