【问题标题】:PHP counting MYSQL rows that contain the same value in one columnPHP计算一列中包含相同值的MYSQL行
【发布时间】: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快。

标签: php mysql


【解决方案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

【讨论】:

  • 感谢沙皇的回复。
猜你喜欢
  • 2016-05-01
  • 2023-03-18
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多