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语句
您可以像这样使用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)
您可以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)