Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用mysql对列中的元素求和_Mysql_Database - Fatal编程技术网

如何使用mysql对列中的元素求和

如何使用mysql对列中的元素求和,mysql,database,Mysql,Database,正如我们大多数人所知,数据库系统具有内置聚合函数SUM,该函数以列名为参数,并返回该列中元素的总和 我想知道是否有其他方法可以使用某种查询对列的元素求和 请记住,我不想作为一个asnwer使用存储过程和游标循环遍历元素并进行一些计算 所以。。。是否有其他方法对列的元素求和(不使用内置聚合函数sum()) 另外,这个问题看起来很奇怪,但我有理由问它 理论上,您可以在表上创建触发器,它将执行以下操作: Update other_table set value=value+NEW.field_hav

正如我们大多数人所知,数据库系统具有内置聚合函数SUM,该函数以列名为参数,并返回该列中元素的总和

我想知道是否有其他方法可以使用某种查询对列的元素求和

请记住,我不想作为一个asnwer使用存储过程和游标循环遍历元素并进行一些计算

所以。。。是否有其他方法对列的元素求和(不使用内置聚合函数sum())


另外,这个问题看起来很奇怪,但我有理由问它

理论上,您可以在表上创建触发器,它将执行以下操作:

 Update other_table set value=value+NEW.field_have_be_summed where option='sum';

但是很难说你到底想要什么。

你可以试试这样的东西:

DECLARE v_sum INT

SELECT v_sum = v_sum + intcol As RunningTotal
FROM Table
SET @values='SELECT GROUP_CONCAT(columnWithNumbers SEPARATOR \'+\')as sumall FROM table';
SET @select = CONCAT('SELECT ', @values); 
PREPARE stmt FROM @select;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

最后的
v_sum
的值将是
intcol

的和,您可以这样做:

DECLARE v_sum INT

SELECT v_sum = v_sum + intcol As RunningTotal
FROM Table
SET @values='SELECT GROUP_CONCAT(columnWithNumbers SEPARATOR \'+\')as sumall FROM table';
SET @select = CONCAT('SELECT ', @values); 
PREPARE stmt FROM @select;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
未经测试

或者更简单的解释,您可以复制此查询的结果

SELECT GROUP_CONCAT(columnWithNumbers SEPARATOR '+')as sumall FROM table

然后添加一个select,然后将刚才复制的结果粘贴到新查询中。

您到底想要什么?你现在的问题似乎更像是一种陈述,而不是任何东西。你为什么想要这个?聚合
SUM()
已经由RDBMS进行了高度优化,并且可以完全受
WHERE
、over join操作等的限制。您为什么想要另一种方式?
SUM()
不适合你吗?它在MySQL中工作……因为几天前我问了一个复杂的问题,但没有得到答案。这就是我问这个问题的原因。如果我得到了这个问题的答案,那么我将尝试做我想要的(这与对列元素求和完全不同)SUM()是最好的,你应该喜欢它。这个很有趣。我想计算一个地理距离,其中列中的每个元素都是一个点。然而,我有两列:纬度和经度,我想对千列中的每两行应用哈弗森公式。对不起,我不清楚你到底想要什么。如果需要所有距离的和(取决于所使用的公式/代数),可以使用和(a+b)或和(aa+bb)。