你好,我想学习SQL中的计数功能,但我甚至无法计算特定列中某个值出现的次数。
我的数据库结构如下(表:natural):
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
mysql_query
已被废弃,请学习mysqli或PDO。 - itachi