1

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')
4

5 に答える 5

1

クエリでelse部分を指定する必要があります:

SELECT b.id, b.rank 
FROM b_products b 
WHERE IF(b.id = '005' AND b.rank < 100, b.id != '005', else condition)
于 2012-12-12T12:30:01.933 に答える
1

単に

WHERE (b.id = '005' AND b.rank >= 100) OR b.id != '005'
于 2012-12-12T12:29:41.420 に答える
1

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)
于 2012-12-12T12:32:42.790 に答える
0

OR句が必要なだけだと思います。

SELECT 
    b.id, 
    b.rank 
FROM 
    b_products b 
WHERE 
   (b.id = '005' AND b.rank < 100)
or 
    b.id <> '005'
于 2012-12-12T12:29:56.477 に答える
0

WHERE条件は、句で次のように直接評価されます。

SELECT b.id, b.rank 
FROM b_products b 
WHERE NOT (b.id = '005' AND b.rank < 100)
于 2012-12-12T12:29:25.123 に答える