Mysql 使用条件列表的任何子集查询数据库

Mysql 使用条件列表的任何子集查询数据库,mysql,sql,database,Mysql,Sql,Database,我有一个MySQL数据库,有很多列(比如column0..column19) 我想选择数据库中满足表单条件的所有行: column0 < value0 AND column1 < value1 AND ... AND column19 < value19. column0

我有一个MySQL数据库,有很多列(比如column0..column19)

我想选择数据库中满足表单条件的所有行:

column0 < value0 AND column1 < value1 AND ... AND column19 < value19.
column0
问题是我想从上面选择满足任意15个条件的行

我知道我可以做多个查询,所有可能的15个条件的组合,但我正在寻找一个只有一个查询的解决方案

MySQL有可能吗?是否有其他数据库体系结构允许此类查询


谢谢

您可以使用下面的功能,但不要指望它会表现得特别好

WHERE (CASE WHEN column0 < value0 THEN 1 ELSE 0 END + 
      CASE WHEN column1 < value1 THEN 1 ELSE 0 END + 
      ... + 
      CASE WHEN column19 < value19 THEN 1 ELSE 0 END) >= 15
WHERE(列0=15时的情况

您可以使用以下选项,但不要期望它的性能特别好

WHERE (CASE WHEN column0 < value0 THEN 1 ELSE 0 END + 
      CASE WHEN column1 < value1 THEN 1 ELSE 0 END + 
      ... + 
      CASE WHEN column19 < value19 THEN 1 ELSE 0 END) >= 15
WHERE(列0=15时的情况

威尔的答案也可以写成:

WHERE (  SUM( column0 < value0 ) 
       + SUM( column1 < value1 ) 
       ... + 
       + SUM( column19 < value19 ) 
      ) >= 15

如果有20个索引(每个
列0
列1
,…,
列19
),它可能会更快。威尔的答案也可以写成:

WHERE (  SUM( column0 < value0 ) 
       + SUM( column1 < value1 ) 
       ... + 
       + SUM( column19 < value19 ) 
      ) >= 15

如果有20个索引(每个
列0
列1
,…,
列19
),它可能会更快。

@AmirW:你是说如果至少满足15个条件,你想选择一行吗?你能在语句中做或做,然后过滤掉后面没有至少15个条件的吗?@Tbone,在我的例子中,ORs可能会提供整个数据库。我可以使用条件0或条件1或条件2之类的东西,例如,其中条件0类似于column0