Php 如何在mysql选择的where子句中添加if-elseif条件?

Php 如何在mysql选择的where子句中添加if-elseif条件?,php,mysql,Php,Mysql,我正在根据3个基本条件选择数据,这不是问题所在,问题是如果满足第一条件,那么它不应该考虑其余两个条件,如如果是第一,但是如果第一条件是假,那么它不到第三,只有第三,就像ELSIF,如果前两个条件不满足,那么它只考虑第三。 /P> 但在mysql中,当我使用或&AND时,它一次考虑所有3个条件 像这样:- SELECT * FROM `table` WHERE 'main-condition' and ('1st condition' or '2nd condition' or '3rd cond

我正在根据3个基本条件选择数据,这不是问题所在,问题是<强>如果满足第一条件,那么它不应该考虑其余两个条件,如如果是第一,但是如果第一条件是假,那么它不到第三,只有第三,就像ELSIF,如果前两个条件不满足,那么它只考虑第三。<强/> /P> 但在mysql中,当我使用或&AND时,它一次考虑所有3个条件

像这样:-

SELECT * FROM `table` WHERE 'main-condition' and ('1st condition' or '2nd condition' or '3rd condition');
在此之后,我还尝试在where子句中使用IF,但它也给出了与相同的结果

代码:-

SELECT * FROM `table` WHERE 'main-condition' and (IF('1st condition',true,IF('2nd condition',true,IF('3rd condition',true,false))));
实际查询:-

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))))));
它给出输出

但我需要这样的输出

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


感谢

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

我对此进行了2-3天的研究,但我发现我们无法获得上述所需的输出,因为mysql查询是针对表行单独执行的,而不是针对整个表执行的

但我通过使用mysqlGroup\u concat()解决了这个问题

查询:-

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');
这将提供如下输出

现在只需使用phpExplode()获得结果,然后获得所需的数据 像

它的输出为


请发布“确定”的实际查询可能的副本,给出真正的查询,您可以在使用该语法时使用该用例
$exactCars=explode(',',$reult->exactCars);