mysql - 选择给出具有两个或两个以上非零值的行的查询

标签 mysql sql

我有一个包含 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)。谢谢

最佳答案

这是另一种方法

select *
from t
where
( 
  (A <> 0 )+
  (B <> 0) +
  (C <> 0 )+
  (D <> 0 )+
  (E <> 0 )+
  (F <> 0 ) 
) >= 2

不等于运算符根据条件返回 bool 值(0/1),您可以对每列的结果求和并根据您的条件消除记录

DEMO

关于mysql - 选择给出具有两个或两个以上非零值的行的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089131/

相关文章:

php - PHP我的管理员突然停止工作

mysql - 包含两列的 COUNT,每列都有自己的 AS 值

mysql - 使用 MySQL 加载字段中包含多个逗号的 .csv 文件

mysql - 手动自动递增

python - 如果记录数适中,pg8000 和 cursor.fetchall() 无法返回记录

sql - 将子字符串与存储的字符串列表进行匹配

PHP - 阻止用户访问 php 页面

sql - 如何在 SQL 脚本文件中使用参数

sql - 如何在azure中定期运行sql查询?

mysql - Laravel:具有复杂条件的 whereHas()