首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_num_rows()不适用于SUM()吗?

mysql_num_rows()不适用于SUM()吗?
EN

Stack Overflow用户
提问于 2010-10-24 07:05:05
回答 2查看 1.2K关注 0票数 0

在不存在匹配行的情况下对下表运行查询时,使用PHP mysql_num_rows()将返回"1“。

经过测试,我发现这个问题是在查询中使用SUM()函数时出现的。如果我从查询中取出SUM(),mysql_num_rows()会像它应该返回的那样返回"0“。

有没有其他东西我应该用来代替mysql_num_rows()来查询表中是否有匹配的行?

表:

代码语言:javascript
复制
name | students_money | grade
George | 5 | A
Bill | 10 | A
Dan | 7 | A

代码:

代码语言:javascript
复制
$sql = "SELECT SUM(students_money) AS sum_money FROM students_table WHERE name = 'Tom' AND name = 'Jack'";
$result = @mysql_query($sql, $con) or die(mysql_error());

$num_rows = mysql_num_rows($result);

if ($num_rows < 1) {

    echo "not everyone has paid";
    exit;

}

while($row = mysql_fetch_array($result)) {

    $sum_money = $row[sum_money];
    $total = $total + $sum_money;

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-24 07:13:57

mysql_num_rows()告诉您数据库查询返回的行数。在你的例子中总是有一行的返回值,因为总是有一次求和。当然,总和可能是0。

在mysql查询浏览器中测试您的查询可能是一个好主意。也许你正在寻找这样的东西?

代码语言:javascript
复制
SELECT name, SUM(students_money) AS sum_money 
FROM students_table
GROUP BY name;

这将以每个名称为基础对总和进行分组。要跳过0和,您可以添加以下内容:

代码语言:javascript
复制
HAVING sum_money > 0;
票数 3
EN

Stack Overflow用户

发布于 2010-10-24 07:11:41

SUM()是一个聚合函数。它获取为组返回的所有行,并将它们相加。

由于没有GROUP BY子句,因此它会将所有行的值相加,即使没有行也是如此。然后,它将合计作为单行返回,因此应该只有1行。

如果您澄清了您想要返回的内容,我可以尝试帮助您编写一条语句来返回它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4006508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档