php - mysqli计算具有特定值的行

时间:2016-04-08 13:50:49

标签: php mysql

目前,我可以使用值“Waiting”计算表中的所有记录。这可以通过使用:

完成
$query = "SELECT COUNT(*) AS SUM FROM jobs WHERE status='Waiting'";

当我想回显行计数时,我只是这样做:

echo $rows['SUM'];

我怎样才能这样做呢?它还会计算值“Ready”的表格中的所有记录?

4 个答案:

答案 0 :(得分:3)

此查询将返回所有status次数除以状态:

SELECT status, COUNT(status) AS tot FROM jobs GROUP BY status

结果集是这样的:

status       tot
-----------  ------
Waiting      123
Ready        80
...          56

答案 1 :(得分:0)

您想要status='Waiting'还是status='Ready'?您可以使用ORAND分隔参数;例如:

$query = "SELECT COUNT(*) AS SUM FROM jobs WHERE status='Waiting' OR status='Ready'";

答案 2 :(得分:0)

在查询中使用IN运算符。

$query = "SELECT COUNT(*) AS SUM FROM jobs WHERE status IN ('Waiting','Ready')";

使用GROUP BY运算符

获取基于组(状态)的计数
$query = "SELECT COUNT(*) AS SUM FROM jobs GROUP BY status";

打印基于状态的结果。

//Create the `mysqli_connection` and assign to `$conn` variable.
$result = mysqli_query($conn, $query); 

if($result->num_rows>0)
{
    while($row = mysqli_fetch_assoc($result))
    {           
        echo "<br>status=" . $row['status'];
        echo "<br>SUM=" . $row['SUM'];
    }
}

答案 3 :(得分:0)

def joinSet(itemSet, length):
    """Join a set with itself and returns the n-element itemsets"""
    ret = []
    for i in itemSet:
        for j in itemSet:
            if len(i.union(j)) == length:
                ret.append(i.union(j))
    return ret

这将计算status = Ready的记录。您使用GROUP BY在状态字段上获取聚合。并且因为您使用了GROUP BY,所以使用HAVING(在GROUP情况下相当于WHERE)来过滤数据。