首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql选择的where子句中添加是否为elseif条件?

如何在mysql选择的where子句中添加是否为elseif条件?
EN

Stack Overflow用户
提问于 2017-05-04 11:25:12
回答 2查看 975关注 0票数 1

我正在根据不属于问题的三个基本条件来选择数据,问题是,如果第一个条件满足了,那么它就不应该像其他条件那样考虑剩下的两个条件,但是如果第一个条件是假的,那么它只会进入第二个条件,而不是第三个条件,就像如果和如果前两个条件不满足,那么它只考虑第三个条件。

但是在mysql中,当我使用或&和时,它将同时考虑所有三个条件。

像这样:-

代码语言:javascript
复制
SELECT * FROM `table` WHERE 'main-condition' and ('1st condition' or '2nd condition' or '3rd condition');

在此之后,我还在where子句中尝试了IF,但是它也给出了与或相同的结果。

代码:-

代码语言:javascript
复制
SELECT * FROM `table` WHERE 'main-condition' and (IF('1st condition',true,IF('2nd condition',true,IF('3rd condition',true,false))));

实际查询:-

代码语言:javascript
复制
SELECT 'filter','car-name' FROM `car` WHERE (((`id` = ? and `type` = 'car')and(IF((find_in_set('new car',`filter`) > 0),true,IF((find_in_set('new',`filter`) > 0, true,if((`filter`=""),true,false))))));

它提供了输出

但我需要这样的输出

如果有人知道如何处理这类查询,请回答我。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-08 14:19:28

我对此进行了2-3天的研究,只有我才发现,正如我前面提到的那样,我们无法获得期望的输出,因为mysql查询是针对表行单独执行的,而不是对整个表执行。

但是我用mysql Group_concat()解决了这个问题。

查询:-

代码语言:javascript
复制
SELECT Group_concat( CASE WHEN (find_in_set('new car',`filter`) > 0) THEN car-name END separator ',') exactCars,Group_concat( CASE WHEN (find_in_set('new',`filter`) > 0) THEN car-name END separator ',') possibleCars,Group_concat( CASE WHEN (`filter`="") THEN car-name END separator ',') defaultCars, FROM `car` WHERE (`id` = ? and `type` = 'car');

这提供了这样的输出

现在只使用php using (),然后得到所需的数据,如

代码语言:javascript
复制
$exactCars=explode(',',$reult->exactCars);

它给出的输出

票数 1
EN

Stack Overflow用户

发布于 2017-05-08 13:05:51

要做到这一点,您需要以不同的条件迭代数据库中的所有记录。因此,更好的方法是获取所有可能的记录,然后使用PHP脚本进行筛选。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43781560

复制
相关文章

相似问题

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