是否可以在WHERE子句中創建一個IF語句,爲了過濾某個產品,我需要類似的東西。WHERE子句中的IF語句
例如,如果產品005具有100或小於該產品的排名應該不會出現在我的查詢結果
例如...
SELECT b.id, b.rank
FROM b_products b
WHERE IF(b.id = '005' AND b.rank < 100, b.id != '005')
是否可以在WHERE子句中創建一個IF語句,爲了過濾某個產品,我需要類似的東西。WHERE子句中的IF語句
例如,如果產品005具有100或小於該產品的排名應該不會出現在我的查詢結果
例如...
SELECT b.id, b.rank
FROM b_products b
WHERE IF(b.id = '005' AND b.rank < 100, b.id != '005')
的IF()函數需要三個參數,而不是兩個:
IF(表達式1,表達式2,表達式3)
如果expr1爲TRUE(expr1 <> 0且expr1 <> NULL),那麼IF()返回 expr2;否則它返回expr3。 IF()返回數值或字符串值 ,具體取決於使用它的上下文。
但是,你有沒有任何說明,不能用正確的布爾表達式來完成:
SELECT b.id, b.rank
FROM b_products b
WHERE b.id<>'005'
OR (b.id='005' AND b.rank<100)
的條件直接在評估WHERE
條款爲:
SELECT b.id, b.rank
FROM b_products b
WHERE NOT (b.id = '005' AND b.rank < 100)
只需
WHERE (b.id = '005' AND b.rank >= 100) OR b.id != '005'
我認爲你只需要一個OR子句。
SELECT
b.id,
b.rank
FROM
b_products b
WHERE
(b.id = '005' AND b.rank < 100)
or
b.id <> '005'
您在查詢指定else部分:
SELECT b.id, b.rank
FROM b_products b
WHERE IF(b.id = '005' AND b.rank < 100, b.id != '005', else condition)
爲什麼不會是可能做到你所需要的僅僅使用「常規」'WHERE' ? –