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行的主要内容,如果未能解决你的问题,请参考以下文章