检查某个值是否存在是 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 列。
我想检查值 '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 列。