Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择提供具有两个或两个以上非零值的行的查询_Mysql_Sql - Fatal编程技术网

Mysql 选择提供具有两个或两个以上非零值的行的查询

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

我有一个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   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),您可以对每列的结果求和,并根据条件删除记录


这不是几天前问的问题吗?同一类?此类问题通常表明设计不佳。