在 mysql 中输出基于条件的子查询

output with condition based sub query in mysql

下面是我的查询:

select c1, c2, c3, c4, c5 from table1 where c1 =0 //条件1
AND c2="abc" //条件2
AND c3="xxx" //条件3
AND c4 = 5 //条件4

我们知道,条件 2 将应用于条件 1 给出的结果数据,条件 3 将应用于条件 2 和 1 给出的结果数据,类似地,条件 4 将被应用...

我想要查询,如果中间的任何条件失败,该查询将进一步执行。

表示如果 条件 3 不会给出结果(或空结果集),那么我的 条件 4 将是应用于 null 结果集,因此最终输出肯定为 null,但我想如果 condition 3 不会给出任何结果(或 null 结果集),那么 condition 4 "Should be Applied" 通过 条件 2 和 1.

结果集 return

由于性能问题,这里我无法更改条件顺序。

请指导我查询。

试试这个

select c1, c2, c3, c4, c5 from table1 where (c1 =0) or (c2="abc") or (c3="xxx") or (c4 = 5)

据我所知,您希望 条件 3 可选。这可以做到,但很难成为有效的解决方案:

Select c1, c2, c3, c4, c5
From table1
Where c1 = 0
  AND c2 = "abc"
  AND (c3 = "xxx"
       OR NOT Exists (Select '*' From table1 Where c1 = 0 AND c2 = "abc" AND c3 = "xxx")
      )
  AND c4 = 5

更好的方法可能是使用临时 table 根据条件 1 和 2 过滤,并将进一步的逻辑应用于该数据子集。

我为此找到了一个简单的解决方案,它在我的场景中有效。此外,我还能够减少对我的大数据执行查询的时间。肯定会执行两个查询,但我找到了这个正确的解决方案。

我使用了简单的联合查询。

select c1, c2, c3, c4, c5 from table1 where c1 =0 //条件1
AND c2="abc" //条件2
AND c3="xxx" //条件3
AND c4 = 5 //条件4
联盟
select c1, c2, c3, c4, c5 from table1 where c1 =0 //条件1
AND c2="abc" //条件2
AND c4 = 5 //条件4

如果其他人有更准确和正确的解决方案。请post吧。