您好,我正在尝试学习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'];要修复最后这段代码,只需使用one和two ...依此类推,natural是正确的语法:D
发布于 2013-05-21 11:54:22
即使值在列中重复,这个方法也会给出正确的答案
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如果您有以下数据
| ID | ONE | TWO | THREE |
--------------------------
| 1 | 34 | 45 | 80 |
| 2 | 41 | 7 | 7 |
| 3 | 7 | 18 | 22 |
| 4 | 7 | 7 | 45 |输出将是
| TOTALCOUNT |
--------------
| 5 |https://stackoverflow.com/questions/16661780
复制相似问题