如何将除ID之外的所有列的值相加

时间:2012-04-23 12:04:26

标签: php mysql sum row

除了第一列之外,我需要总计一行的总和 类似的东西:

SELECT SUM(col2 + col3 + col4 + colN) 从数字 WHERE user_name ='person';

我的表将不断添加列。所以我希望它自动获取新列的总和,而不需要将其硬编码到查询中?

user_name  | Col | col2 | Col3 | Col4 + other columns.

person1    |  2  |  3   | 76   | 56  etc.    ---------> sum of row

person2    |  6  |  72  | 200  | 13  etc.    ---------> sum of row

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

不希望“避免”这个问题,但看起来你可以使用不同的数据结构。

您应该考虑使用包含iduser_name列的'用户'表,以及一个新表(例如properties),其中包含您的每个其他列的行当前表格(Col1Col2 ... ColN)。然后,新表将有一个user_name列,用于将其链接到users表。

这样你就可以做到这样的事情:

SELECT SUM(property_column) FROM properties WHERE user_name = <RequiredUserName>

我还建议按ID选择用户(即将properties表与user_id列而不是user_name列),除非您确信user_name永远不会改变(甚至然后...)。

答案 1 :(得分:1)

也许最简单的解决方案是在PHP中完成:

$res = mysql_query("select * from numbers where user = ...");
while ($row = mysql_fetch_assoc($res)) {
    $row['Id'] = 0; // don't want to sum the Id
    $sum = array_sum($row); // this is the required sum
    ....
}

答案 2 :(得分:0)

如前所述,建议您重新访问数据库结构, 如果你不能和 如果你想在PHP中执行它,你可以返回结果集然后循环遍历字段并排除你不想要的字段然后将其他所有字段相加,假设它是正确的类型,使用mysql_field_type来查找具体类型。