选择未知多列具有假值的位置

pepwfjgg  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(332)

一张过敏表 `| Recipes_id| is_dairy| is_nuts| is_meat| etc.| etc.| etc.| +

c3frrgcw

c3frrgcw1#

-+---------+--------+--------+-----+------+-----+用户只指定他不想在食谱中包含的东西,例如不含坚果和奶制品。 在mysql(8.0.1)中有没有一种方法可以在没有预定义参数长度的情况下进行查询? 例如select from allergies where a = false and b = false and c = false` 其中长度(这里a,b,c=3)是未知的?
我正在使用flask作为我的后端引擎
只是为了澄清,变量的数量不是预先定义的,例如一个查询中可以有3列,另一个查询中可以有5列(列的数量必须为false)。

kse8i1jr

kse8i1jr2#

如果你没有 NULL 在那里,你可以用 NOT IN 检查,没有 true 在要检查的列列表中。

SELECT *
       FROM allergies
       WHERE true NOT IN (a,
                          b,
                          c);

如果你有 NULL 他们应该被当作 false 你可以用 colaesce() .

SELECT *
       FROM allergies
       WHERE true NOT IN (coalesce(a, false),
                          coalesce(b, false),
                          coalesce(c, false));

相关问题