如何选择任何两列高于某个值的所有记录

时间:2016-04-30 16:39:46

标签: sql sqlite

我有一个包含50列的表格。看起来像这样

GUID  Field1  Field2  Field3 .... Field50
----  ------  ------  ------      -------
1     0       1       0           0
2     1       0       0           1
3     0       2       3           1

我需要找到所有记录,其中任意 50列中的两个(或更多)是>这将导致返回记录2和3。

我不确定如何解决这个问题。如果我试着测试所有的排列,那就太疯狂了。必须有一个更好的方法。

我正在使用SQL。

1 个答案:

答案 0 :(得分:1)

您可能有错误的数据库设计。当您在多列中具有相同的数据时 - 仅通过数字后缀进行区分 - 那么这通常表明您确实需要正确的联结表。

无论如何,你可以做到这一点,它只是一个很长的case条件:

select t.*
from t
where ((case when field1 > 0 then 1 else 0 end) + 
       (case when field2 > 0 then 1 else 0 end) + 
       . . .
       (case when field50 > 0 then 1 else 0 end) + 
      ) >= 2;

您需要使用额外的47个字段填写. . .