如何求和查询结果

时间:2012-07-03 20:03:25

标签: php mysql

我有一个查询,其中输出处理如下所示:

 while($row = mysql_fetch_array($result)){
    echo $row['username'] . " " . $row['earning'];
 }

输出结果如下:

 JOHN  200
 JOHN  350
 NEO   100
 NEO   220

我想要实现的是每个名字出现一次,并且"赚取"是该名称的所有收入的总和,如下所示:

 JOHN 550
 NEO  320

我必须提到我 CAN NOT 更改查询;这是最大的问题。

有希望吗?一些建议? :)

5 个答案:

答案 0 :(得分:4)

尝试:

$user = array();

while($row = mysql_fetch_array($result)){
    $user[$row['username']]  += $row['earning'];
 }

做回声:

foreach($user as $key => $value) {
    echo $key."=". $earnings."<br>";
}

答案 1 :(得分:4)

您可以将循环中的值与另一个数组相加,然后输出它。

尝试:

$earnings = array();

while($row = mysql_fetch_array($result)) {
    if (!isset($earnings[$row['username']])) $earnings[$row['username']] = 0;
    $earnings[$row['username']] += $row['earning'];
}

foreach($earnings as $user => $earnings) {
    echo "$user  $earnings<br />\n";
}

答案 2 :(得分:1)

要快速找到这个答案的解决方案,您可能只想将这些结果附加到关联的数组中,然后简单地将其循环以获得最终计数。

所以,像这样:

 $names= array();

 while($row = mysql_fetch_array($result)){
    $names[$row["username"]] += $row["earning"];
 }

 foreach($names as $k => $v) {
    echo $k." ".$v."\n";
 }

答案 3 :(得分:0)

不是仅仅选择数据,而是选择字段SUM(otherfield),其中otherfield是要求求和的数字的字段。然后使用第一个字段添加GROUP BY

答案 4 :(得分:0)

在mysql端尝试这个你不需要在php端计算所以不要改变你的PHP端代码jst更改查询这样

SELECT
  username,
  SUM(earning)
FROM yourtable
GROUP BY (username)

希望它能为你效劳