PHP计算一列中包含相同值的MYSQL行

Posted

技术标签:

【中文标题】PHP计算一列中包含相同值的MYSQL行【英文标题】:PHP counting MYSQL rows that contain the same value in one column 【发布时间】:2014-04-30 14:30:31 【问题描述】:

我有一个数据库,其中有一列名为“状态”。此列可以包含五个可能的值。现在我需要汇总行数,其中状态列包含值“已取消”。请问我应该用php中的什么函数来计算它?感谢您的回复。


编辑:

我认为这是完整的解决方案。如果我错了,请纠正我。

$canceledsum=mysql_query("SELECT COUNT(*) AS totalcanceled FROM nabidka WHERE status='canceled'");
$d=mysql_fetch_assoc($canceledsum);
echo $d['totalcanceled'];

【问题讨论】:

其实我是新人,正在学习,所以大概是这个原因。谢谢。 计数、排序等MySQL操作总是比PHP快。 【参考方案1】:

您可能正在寻找这个:

SELECT COUNT(*)
FROM yourtable
WHERE status='canceled'

或此查询将计算所有不同状态值的所有行:

SELECT status, COUNT(*)
FROM yourtable
GROUP BY status

编辑:如果您只想计算当月创建的记录:

SELECT status, COUNT(*)
FROM yourtable
WHERE create_date >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
GROUP BY status

这里DATE_FORMAT(CURDATE(), '%Y-%m-01')会返回当月的第一天,如果你以后没有创建记录就可以了。

【讨论】:

感谢您解决了我的目标(以及更多)。 如前所述,我有名为 status 的列。 SELECT COUNT (*) FROM quote WHERE status='canceled' 感谢您的代码是计算包含满足条件状态='已取消'的每一行。但我需要包括计算第二个条件。我有一个 create_date 列,需要根据当前月份仅计算此列中的行数。这是一个 DATE 类型的列,所以今天的日期出现在列中如下: 03/23/2014 有没有办法做到这一点?非常感谢您的帮助。 很抱歉打扰你,但这是可以让我学到很多东西的东西...... 天哪,你太棒了 :-) 非常感谢,保重! 这个呢? WHERE status='canceled' AND MONTH(create_date) = MONTH(CURDATE()) 但这会返回 0 以及您的代码。根据这两个条件,在数据库中有 1 条记录。【参考方案2】:

不用PHP计数,可以直接用sql。

触发这个查询:

SELECT COUNT(*) FROM table_name WHERE status = 'canceled';

关于如何触发查询和从PHP获取数据,请参考this link

【讨论】:

感谢沙皇的回复。

以上是关于PHP计算一列中包含相同值的MYSQL行的主要内容,如果未能解决你的问题,请参考以下文章

显示 MySQL 中包含相同值的所有行

显示 MySQL 中包含相同值(特定值)的所有行

保留数据框中的行,对于某些列的值的所有组合,在另一列中包含相同的元素

从不同的相关记录组中选择两列之一中包含重复值的所有行

SQL如何查询出某一列中不同值出现的次数?

仅显示特定行中包含特定值的行