您好,我从下面的逻辑中创建了一条MySQL语句。
Select * from content
if(description=='educational')
where serial like '%EDU2015%'
else where serial like '%NOVEL2015%'逻辑很简单,如果description列是教育性的,则过滤器应该具有字符串"EDU2015“。否则,它应该使用序列"NOVEL2015”进行过滤。
我不确定我是否使用了mysql中的if语句,但我不知道将https://dev.mysql.com/doc/refman/5.7/en/if.html中的where语句放在哪里
发布于 2016-03-13 18:45:17
您可以像这样使用CASE表达式:
SELECT * FROM content
WHERE serial like CASE WHEN description = 'educational'
THEN '%EDU2015%'
ELSE '%NOVEL2015%'
END请注意,当您比较值时,需要一个等号,而不是两个。
编辑:如果您想根据某个条件对不同的列进行过滤,可以使用以下命令:
SELECT * FROM content
WHERE (description = 'educational' and serial like '%EDU2015%')
OR(description <> 'educational' and id>100)发布于 2016-03-13 18:48:33
您可以在WHERE块中使用IF,如下所示:
Select *
from content
where serial like IF(description = 'educational','%EDU2015%','%NOVEL2015%');或者,你也可以选择像@sagi这样的CASE WHEN表达式。

mysql> SELECT IF(1>3,'true','false');
+------------------------+
| IF(1>3,'true','false') |
+------------------------+
| false |
+------------------------+
1 row in set (0.00 sec)https://stackoverflow.com/questions/35969219
复制相似问题