Mysql 选择提供具有两个或两个以上非零值的行的查询
我有一个MySQL表,有8列(id、user、a、b、c、d、e、f) 其中我有一个不同用户的列表,这些用户的(0到9)值列如下:Mysql 选择提供具有两个或两个以上非零值的行的查询,mysql,sql,Mysql,Sql,我有一个MySQL表,有8列(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
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 select查询,它提供了一个具有两个或两个以上非零值的用户列表。
因此,查询应该返回记录id(2,4,6,7)。谢谢,试试这个
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
这是另一种方法
select *
from t
where
(
(A <> 0 )+
(B <> 0) +
(C <> 0 )+
(D <> 0 )+
(E <> 0 )+
(F <> 0 )
) >= 2
选择*
从t
哪里
(
(A 0)+
(B 0)+
(C 0)+
(D 0)+
(E 0)+
(F 0)
) >= 2
“不等于”运算符根据条件返回布尔值(0/1),您可以对每列的结果求和,并根据条件删除记录
这不是几天前问的问题吗?同一类?此类问题通常表明设计不佳。