Php 如何对一行中除ID之外的所有列的值求和

Php 如何对一行中除ID之外的所有列的值求和,php,mysql,sum,row,Php,Mysql,Sum,Row,除第一列外,我需要求一行的总和。 类似的情况也有: 选择总和(col2+col3+col4+colN) 从数字 其中user_name=‘person’ 我的表将不断添加列。所以我希望它也能自动获取新列的总和,而不需要硬编码到查询中 user_name | Col | col2 | Col3 | Col4 + other columns. person1 | 2 | 3 | 76 | 56 etc. ---------> sum of row person

除第一列外,我需要求一行的总和。
类似的情况也有:

选择总和(col2+col3+col4+colN) 从数字 其中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

提前感谢您的帮助

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

您应该考虑使用一个“用户表”,用于“代码> ID ID/CODE >和<代码>用户名称>代码>,以及一个新表(例如,代码>属性< /代码>),在当前表中的每个其他列中有一行(<代码> COL1,<代码> COL2…<代码> CORN< /代码>)。然后,新表将有一个user_name列将其链接到users表

这样,您就可以执行以下操作:

SELECT SUM(property_column) FROM properties WHERE user_name = <RequiredUserName>
从user\u name=

我还建议按ID选择用户(即在
properties
表中有一个user\u ID列,而不是user\u name列),除非您确信用户名永远不会更改(甚至是…)。

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

您应该考虑使用一个“用户表”,用于“代码> ID ID/CODE >和<代码>用户名称>代码>,以及一个新表(例如,代码>属性< /代码>),在当前表中的每个其他列中有一行(<代码> COL1,<代码> COL2…<代码> CORN< /代码>)。然后,新表将有一个user_name列将其链接到users表

这样,您就可以执行以下操作:

SELECT SUM(property_column) FROM properties WHERE user_name = <RequiredUserName>
从user\u name=

我还建议按ID选择用户(即,在
属性
表中有一个user\u ID列,而不是user\u name列),除非您确信用户名永远不会更改(甚至是…)。

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

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

也许最简单的解决方案是用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
    ....
}

也许最简单的解决方案是使用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
    ....
}

如果您需要这样做,那么最好以moe适当的方式规范化您的数据库。这将有助于了解更多关于您在Col1、Col2中存储的信息类型的信息。。。科恩。如果你能更新你的问题或在这里添加更多细节的评论,那么我会看看我是否能用更多的例子更新我的答案。如果你需要这样做,那么你最好以moe适当的方式规范你的数据库。这将有助于更多地了解你在Col1、Col2中存储的信息类型。。。科恩。如果您能够更新您的问题或在此处添加带有更多详细信息的注释,那么我将查看是否可以使用更多示例更新我的答案。您的意思是$row['user_name']=0;/不想对用户名求和吗?我知道我会更好。仅使用OP的现有列名…您的意思是$row['user_name']=0;//不想对用户名求和吗?我知道我会更好。只是使用OP现有的列名…好的,谢谢,我已经这么做了。现在我尝试将数据插入到特定字段中。在tablename(colNumberX)中插入500个值,其中(ID Coulmn)=idnumber----->类似于这样的内容。有什么想法吗?如果不了解更多的上下文,很难推荐。如果新的属性表中有user\u name、property\u name和value列,则可以使用INSERT-INTO-properties(user\u name、property\u name、value)值(“billy”、“high-score”、500)。您可能还希望将user_name和property_name都设置为主键,以便在查询末尾添加“在重复密钥更新时”。如果该用户/属性组合已经存在值,则这将替换这些值。可能值得用更多信息更新您的原始问题,或者将此部分记录为新问题。好的,谢谢,我已经完成了。现在我尝试将数据插入到特定字段中。在tablename(colNumberX)中插入500个值,其中(ID Coulmn)=idnumber----->类似于这样的内容。有什么想法吗?如果不了解更多的上下文,很难推荐。如果新的属性表中有user\u name、property\u name和value列,则可以使用INSERT-INTO-properties(user\u name、property\u name、value)值(“billy”、“high-score”、500)。您可能还希望将user_name和property_name都设置为主键,以便在查询末尾添加“在重复密钥更新时”。如果该用户/属性组合已经存在值,则这将替换这些值。可能值得用更多信息更新您的原始问题,或者将此部分作为新问题记录。