gpt4 book ai didi

php - MySQL-跨多列添加行总计

转载 作者:行者123 更新时间:2023-11-29 14:16:02 24 4
gpt4 key购买 nike

我有一个大约有 100 列的 MySQL 表。所有列都是 INT。我希望能够通过 ID 选择一行,并获取所有列加在一起的总数。

还有两个额外的考虑因素。字段标题差异很大,因此我希望能够通过引用字段编号而不是字段标题来使其工作。

最后,我希望能够指定一个范围,例如,添加字段 35 到字段 76 的总计,其中 id = 50。

有办法做到这一点吗?非常感谢!

最佳答案

您需要动态构建查询。

首先您需要列名(您也可以自动检索它们,但需要额外的查询)。最好的办法是将它们放入数组中:

$Fields = array(
'id', 'fld2', 'fld3', ..., 'fld99'
);

function getSumField($from, $to, $allow_null = False)
{
GLOBAL $Fields;
$a_sum = array();
for($i = $from; $i <= $to; $i++)
{
if ($allow_null)
$a_sum[] = "COALESCE({$Fields[$i]},0)";
else
$a_sum[] = $Fields[$i];
}
return '('.implode('+', $a_sum).')';
}

// So we want: sum of fields 17-42 of the ONE ROW where ID = 5

$fld = getSumField(17, 42);
$SQL = "SELECT $fld FROM tbl WHERE id = 5;";

// Sum of same, in rows with ids from 7 to 22
$SQL = "SELECT SUM($fld) AS total FROM tbl WHERE id BETWEEN 7 AND 22;";

关于php - MySQL-跨多列添加行总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12652434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com