首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计数SQL语法计数(值)多列

计数SQL语法计数(值)多列
EN

Stack Overflow用户
提问于 2013-05-21 11:45:55
回答 1查看 2.3K关注 0票数 6

您好,我正在尝试学习sql中的Count,但我甚至不能计算一个值在特定列中出现的次数。

我的数据库结构是这样的。(表:自然)

代码语言:javascript
复制
ID |  one |  two | three |

1  |   34 |  45  |  80  |
2  |   41 |  34  |  7   |
3  |   7  |  18  |  22  |
4  |   8  |  7   |  45  |

我在试这个

代码语言:javascript
复制
 $result=mysql_query("SELECT COUNT(one) AS total FROM natural
WHERE one=7")or die("Error: ".mysql_error());
$data=mysql_fetch_assoc($result);
echo $data['total'];

但是即使只有1列的计数,我也不能得到结果。

我需要的是计算在所有列中有多少次是“值”(例如7

如本例所示,值7=3个总数(多列)

我怎么能做一个那样的sql。

编辑:尝试这个(我的语法问题在哪里?)

代码语言:javascript
复制
$result=mysql_query("SELECT  COUNT(DISTINCT id) TotalCount FROM tblname WHERE 7 IN (one, two, three)")or die("Error: ".mysql_error());
$data=mysql_fetch_assoc($result);
echo $data['TotalCount'];

我很糟糕,谢谢你的回答,但我认为我的问题出在mysql_query ()上,因为我总是有一个语法问题,所有你的答案显然都是我的问题。

代码语言:javascript
复制
$result=mysql_query("SELECT (SUM(CASE WHEN   one = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN   two = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN three = 7 THEN 1 ELSE 0 END)) TotalCount
  FROM natural")or die("Error: ".mysql_error());
$data=mysql_fetch_assoc($result);
echo $data['TotalCount'];

要修复最后这段代码,只需使用onetwo ...依此类推,natural是正确的语法:D

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-21 11:54:22

即使值在列中重复,这个方法也会给出正确的答案

代码语言:javascript
复制
SELECT (SUM(CASE WHEN   one = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN   two = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN three = 7 THEN 1 ELSE 0 END)) TotalCount
  FROM table1

如果您有以下数据

代码语言:javascript
复制
| ID | ONE | TWO | THREE |
--------------------------
|  1 |  34 |  45 |    80 |
|  2 |  41 |   7 |     7 |
|  3 |   7 |  18 |    22 |
|  4 |   7 |   7 |    45 |

输出将是

代码语言:javascript
复制
| TOTALCOUNT |
--------------
|          5 |
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16661780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档