繁体   English   中英

在MySQL表行中求和的有效方法

[英]Effective wayto sum values in MySQL table rows

我有一个看起来像这样的MySQL表:

+--------------------------------------+
|   id   |    product_id   |   qty     |
+--------------------------------------+
|    1   |        0        |    1      |
|    2   |        1        |    3      |
|    3   |        0        |    2      |
|    4   |        2        |    18     |
+--------------------------------------+

我想获取表中每种产品的总数。 因此,例如,对于上表,这是我想要的结果:

0-> 3
1-> 3
2-> 18

我认为最简单的方法是遍历MySQL结果,并将每种产品的数量添加到数组中数组中与product_id相对应的位置。 IE浏览器:

$qtyArray = array();

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
    $qtyArray[$row[product_id]] += $row[qty];
}

我有两个问题:

  1. 以上工作可以吗?
  2. 有更好的方法吗?

谢谢!

MySQL为您做到这一点:

SELECT product_id, sum(qty)
FROM tablename
GROUP BY product_id

至于第一个问题。 它将起作用,但是将发出“未定义的偏移量”通知

还请记住,数组索引必须是字符串,因此

$qtyArray[$row['product_id']] += $row['qty'];

如前所述-最好使用群组查询,因为这样效率更高。

然而:

$qtyArray[$row[product_id]] += $row[qty];

除非已设置变量,否则这将触发通知。 那是因为它等效于:

$qtyArray[$row[product_id]] = 
    $qtyArray[$row[product_id]] + // First time around this won't exist
    $row[qty];

如果(在其他情况下)您需要执行类似的操作-如有疑问,请检查数组键是否存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM