检查某个值是否存在是 10 列中的任意 4 列

Check if certain value exists is any 4 out of 10 columns

我想检查值 'true' 是否存在于 10 列中的任意 4 列中。它可以使用简单的 if else 来完成,但是是否有任何特定的有效方法,这样我就不会在不使用循环的情况下错过任何组合。 如果每行的任意 4 列为真,则设置输出 'yes'。

这是我喜欢做的事情。合适不合适就是另外一回事了

我将 BIT 列转换为 INT 并添加它们...true 转换为 1,false 转换为 0。

SELECT
    CASE 
      WHEN CAST(BitCol1 AS INT) + 
           CAST(BitCol2 AS INT) +
           CAST(BitCol3 AS INT) +
           CAST(BitCol4 AS INT) +
           CAST(BitCol5 AS INT) +
           CAST(BitCol6 AS INT) + 
           CAST(BitCol7 AS INT) + 
           CAST(BitCol8 AS INT) + 
           CAST(BitCol9 AS INT) +
           CAST(BitCol10 AS INT) >= 4
      THEN 'Yes'
      ELSE 'No'
    END

此查询将为您提供所需的结果:

SELECT IF(count(id) >= 4, 'YES', 'NO') AS OUTPUT
FROM TABLE_NAME    
WHERE 'true' in (COLUMN1, COLUMN2, ..., COLUMN10);

TABLE_NAME 替换为您的 table 并将 COLUMN 替换为您的 table 列。