SQL多bucket列判断实现:多列值为1返回1,单列为1返回0
实现方案
你可以直接对4个bucket字段求和,再通过CASE语句做判断即可,因为所有bucket字段的取值只有0和1,求和结果自然就是值为1的列的数量:
SELECT id, bucket_1, bucket_2, bucket_3, bucket_4, CASE WHEN (bucket_1 + bucket_2 + bucket_3 + bucket_4) > 1 THEN 1 ELSE 0 END AS result FROM 你的表名;
如果你用的数据库中bucket字段是字符串类型存储的0/1,求和前先转成数值类型即可,示例:
CASE WHEN (CAST(bucket_1 AS SIGNED) + CAST(bucket_2 AS SIGNED) + CAST(bucket_3 AS SIGNED) + CAST(bucket_4 AS SIGNED)) > 1 THEN 1 ELSE 0 END AS result
执行上述查询就可以得到你需要的带result字段的输出结果。
内容的提问来源于stack exchange,提问作者user16228179
相关产品推荐
相关产品推荐

