php - 计数 SQL 语法 COUNT(value) 多列

标签 php mysql sql

你好,我正在尝试了解 sql 中的计数,但我什至无法计算某个值在特定列中出现了多少次

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

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 |

关于php - 计数 SQL 语法 COUNT(value) 多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16661780/

相关文章:

php - 对 PHP 数组中的某些元素建立索引

php - Laravel 查询 -> FIRST();

php - Twig : Get value of the entity attached to the form in twig view Symfony

mysql - 从具有不同结构的多个表中选择数据

java - 如何回滚一次插入到 3 个表中的数据?

php - sql注入(inject)改变返回值

mysql - SQL查询解决

php - 显示 MySQL 值

php - 如何在 Web 应用程序中接收和处理电子邮件

MySQL - 计算多个表的相关行数