是否可以在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')
答案 0 :(得分:1)
简单地
WHERE (b.id = '005' AND b.rank >= 100) OR b.id != '005'
答案 1 :(得分: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)
答案 2 :(得分:1)
IF()函数需要三个参数,而不是两个:
如果(表达式1,表达式2,表达式3)
如果expr1为TRUE(expr1&lt;&gt; 0且expr1&lt;&gt; NULL),则IF()返回 表达式2;否则返回expr3。 IF()返回一个数字或字符串 值,取决于使用它的上下文。
但是,您没有描述使用适当的布尔表达式无法实现的任何内容:
SELECT b.id, b.rank
FROM b_products b
WHERE b.id<>'005'
OR (b.id='005' AND b.rank<100)
答案 3 :(得分:0)
条件在WHERE
子句中直接评估为:
SELECT b.id, b.rank
FROM b_products b
WHERE NOT (b.id = '005' AND b.rank < 100)
答案 4 :(得分:0)
我认为你只需要一个OR条款。
SELECT
b.id,
b.rank
FROM
b_products b
WHERE
(b.id = '005' AND b.rank < 100)
or
b.id <> '005'