选择“未知的多列”的值为“ False”的位置

时间:2019-01-07 12:43:45

标签: python mysql

带有过敏表
   | Recipes_id| is_dairy| is_nuts| is_meat| etc.| etc.| etc.| +-----------+---------+--------+--------+-----+------+-----+
用户只在食谱中指定他不想吃的东西,例如没有坚果和乳制品。
mysql(8.0.1)中是否有一种方法可以在没有预定义长度的参数的情况下进行查询?
例如select from allergies where a = false and b = false and c = false
前面的长度(这里a,b,c = 3)不知道吗?
我将烧瓶用作后端引擎
只是为了澄清起见,变量的数量不是预定义的,例如,在一个查询中可以是3列,在另一个查询中可以是5列(列数必须为false)。

1 个答案:

答案 0 :(得分:1)

如果其中没有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));