一起添加行

时间:2014-07-28 17:36:14

标签: php mysql sql rows

我有一个表有一些行和很多列(大约50个) - 我不想列出所有列名,我使用while循环来遍历表,使用foreach命令查找列名和值。 现在我想将这两行添加到一行(其中id为1)并将值加在一起......

id | col 1 | col 2 | ...
 1    30      21
 1    11      16
 2    75      0

看起来应该是这样的

id | col1 | col2 | ...
 1    41     37
 2    75      0

这就是我的......

$query = mysql_query("SELECT * FROM `table` WHERE `id`='1'");
while ($row = mysql_fetch_assoc($query)) {
    foreach($row as $key => $val) {
        if($key != 'id') {
            //the sum code...?
        }
    }
}
你能帮帮我吗?非常感谢你......

3 个答案:

答案 0 :(得分:1)

只是在mysql中对结果进行求和。数据库用于处理这样的事情,因此它比在php中执行更快的解决方案。

SELECT 
    id, 
    SUM(col1), 
    SUM(col2) 
FROM table
GROUP BY id;

答案 1 :(得分:1)

基于你的代码表明你正在使用mysql我将给你一个mysql解决方案(可以很容易地移植到大多数RDBMS)。您正在寻找的内容可以通过aggregate functions轻松完成。点击链接阅读mysql的所有集合函数。

SELECT id, SUM(col1), SUM(col2) FROM table GROUP BY id;

答案 2 :(得分:0)

试试这个:请参阅解释为注释:

<?php
$query = mysql_query("SELECT * FROM `table` WHERE `id`='1'");
//Initially Set all the columns as zero.
$col1 = 0; $col2 = 0; 
//Etc.
while ($row = mysql_fetch_assoc($query)) {
    foreach($row as $key => $val) {
        if($key != 'id') {
            $$key += $val;
            //Like: $col1 += 30;
        }
    }
}

//Now All the variables are ready added:
//Like:  $col1 = 41;
//Like:  $col2 = 37;

//Use them However you like:
//To update:

//1. First Delete both rows:

$query = mysql_query("DELETE FROM `table` WHERE `id`='1'");

//2. Insert


$query = mysql_query("INSERT INTO `table` (`id`,`col1`,`col2`) VALUES ('1','{$col1}','{$col2}') ");
//And so on



?>