MySQL where语句基于if

Reu*_*uta 2 mysql if-statement where-clause

嗨,我正在从以下逻辑制作MySQL语句.

Select * from content 
if(description=='educational')
where serial like '%EDU2015%'
else where serial like '%NOVEL2015%'
Run Code Online (Sandbox Code Playgroud)

逻辑很简单,如果说明列是教育性的,那么过滤器应该有字符串"EDU2015.否则,它应该使用"NOVEL2015"的序列进行过滤

我不确定我是否使用在mysql中使用IF语句的方式,但我不知道在哪里放置来自https://dev.mysql.com/doc/refman/5.7/en/if.html的where语句

sag*_*agi 5

您可以像这样使用CASE表达式:

SELECT * FROM content
WHERE serial like CASE WHEN description = 'educational'
                       THEN '%EDU2015%'
                       ELSE '%NOVEL2015%'
                  END
Run Code Online (Sandbox Code Playgroud)

请注意,比较值时,需要一个等号,而不是两个.

编辑:如果要根据条件筛选不同的列,可以使用:

SELECT * FROM content
WHERE (description = 'educational' and  serial like '%EDU2015%')
    OR(description <> 'educational' and id>100)
Run Code Online (Sandbox Code Playgroud)


100*_*111 5

您可以IF在WHERE块中使用:

Select * 
from content 
where serial like IF(description = 'educational','%EDU2015%','%NOVEL2015%');
Run Code Online (Sandbox Code Playgroud)

或者你可以选择CASE WHEN像@sagi所说的表达式.

在此输入图像描述

mysql> SELECT IF(1>3,'true','false');
+------------------------+
| IF(1>3,'true','false') |
+------------------------+
| false                  | 
+------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)