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')
クエリで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 (b.id = '005' AND b.rank >= 100) OR b.id != '005'
IF()関数は、2 つではなく 3 つの引数を想定しています。
IF(expr1,expr2,expr3)
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)
OR句が必要なだけだと思います。
SELECT
b.id,
b.rank
FROM
b_products b
WHERE
(b.id = '005' AND b.rank < 100)
or
b.id <> '005'
WHERE
条件は、句で次のように直接評価されます。
SELECT b.id, b.rank
FROM b_products b
WHERE NOT (b.id = '005' AND b.rank < 100)