繁体   English   中英

计算SQL语法COUNT(值)多列

[英]Count SQL Syntax COUNT (value) multiple columns

您好我试图了解SQL中的Count,但我甚至无法计算特定列中的值的次数

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

ID |  one |  two | three |

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

我试着这个

 $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。

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

$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()因为我总是有一个语法问题,你的所有答案和它显然是我。

$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

即使值在列之间重复,这个也会给出正确的答案

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

SQLFiddle

如果您有以下数据

| ID | ONE | TWO | THREE |
--------------------------
|  1 |  34 |  45 |    80 |
|  2 |  41 |   7 |     7 |
|  3 |   7 |  18 |    22 |
|  4 |   7 |   7 |    45 |

输出将是

| TOTALCOUNT |
--------------
|          5 |

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM