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