首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于if的MySQL where语句

问基于if的MySQL where语句
EN

Stack Overflow用户
提问于 2016-03-13 18:41:06
回答 2查看 9.1K关注 0票数 2

您好,我从下面的逻辑中创建了一条MySQL语句。

代码语言:javascript
复制
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语句放在哪里

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-13 18:45:17

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

代码语言:javascript
复制
SELECT * FROM content
WHERE serial like CASE WHEN description = 'educational'
                       THEN '%EDU2015%'
                       ELSE '%NOVEL2015%'
                  END

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

编辑:如果您想根据某个条件对不同的列进行过滤,可以使用以下命令:

代码语言:javascript
复制
SELECT * FROM content
WHERE (description = 'educational' and  serial like '%EDU2015%')
    OR(description <> 'educational' and id>100)
票数 5
EN

Stack Overflow用户

发布于 2016-03-13 18:48:33

您可以在WHERE块中使用IF,如下所示:

代码语言:javascript
复制
Select * 
from content 
where serial like IF(description = 'educational','%EDU2015%','%NOVEL2015%');

或者,你也可以选择像@sagi这样的CASE WHEN表达式。

​

​

代码语言:javascript
复制
mysql> SELECT IF(1>3,'true','false');
+------------------------+
| IF(1>3,'true','false') |
+------------------------+
| false                  | 
+------------------------+
1 row in set (0.00 sec)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35969219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档