我有一个包含8列的MySQL表(id,user,a,b,c,d,e,f) 我在其中列出了具有(0到9)值的不同用户列表,如下所示:
Id User A B C D E F
1 0001 0 1 0 0 0 0
2 0002 0 5 8 4 6 5
3 0003 0 0 0 0 0 5
4 0004 2 6 4 5 4 1
5 0005 1 0 0 0 0 0
6 0006 7 6 5 4 0 9
7 0007 4 0 0 0 0 8]
我想要一个MySQL选择查询,它给出了具有两个或两个以上非零值的用户的列表。 所以查询应该返回记录id(2,4,6,7)。感谢
答案 0 :(得分:4)
这是另一种方法
select *
from t
where
(
(A <> 0 )+
(B <> 0) +
(C <> 0 )+
(D <> 0 )+
(E <> 0 )+
(F <> 0 )
) >= 2
不等于运算符会根据条件返回布尔值(0/1)值,您可以总结每列的结果并根据您的条件消除记录
答案 1 :(得分:1)
试试这个。
select user
from (
SELECT *,
CASE WHEN a>0 THEN 1 ELSE 0 END +
CASE WHEN b>0 THEN 1 ELSE 0 END +
CASE WHEN c>0 THEN 1 ELSE 0 END +
CASE WHEN d>0 THEN 1 ELSE 0 END +
CASE WHEN e>0 THEN 1 ELSE 0 END +
CASE WHEN f>0 THEN 1 ELSE 0 END chk
FROM yourtable
) a
where chk>=2