1

是否有可能或其他解决方案在单个 sql 查询中求和并选择多行并使用 while 循环打印:

$query = mysql_query("SELECT SUM(Total), * FROM table");
while ($fetch = mysql_fetch_row($query)) {
    echo $fetch[a];
    echo $fetch[b];
    echo $fetch[c];
}
4

7 回答 7

4

将 JOIN 与计算总数的子查询一起使用。

SELECT SumTotal, a.*
FROM Table a
JOIN (SELECT SUM(Total) SumTotal
      FROM Table) b
于 2013-08-22T08:09:40.813 回答
2

你是这个意思吗?

SELECT (SELECT SUM(Total) FROM `table`) totalSum, a.* FROM `table` a
于 2013-08-22T08:00:30.333 回答
1

你可以按照@491243 的建议去做

SELECT (SELECT SUM(Total) FROM `table`) AS totalSum, * FROM `table`

但不建议这样做,因为这将导致SQL Engine计算从数据库中选择的每一行的sumtotal,并将结果的新列发送到列字段php中的相同值,totalSum

最好进行 2 个查询。一个用于选择行,另一个用于获取总数

于 2013-08-22T08:07:56.887 回答
1

我们可以使用 CROSS APPLY 进行计算。

SELECT SumTotal, A.* 
FROM table A 
CROSS APPLY (SELECT SUM(Total) SumTotal FROM Table) B
于 2021-08-17T13:10:56.800 回答
0

使用GROUP BY子句。

$query = mysql_query("SELECT *,SUM(Total) as TotalSUM FROM table GROUP BY Total");

    while ($fetch = mysql_fetch_row($query)) {

    echo $fetch[a];
    echo $fetch[b];
    echo $fetch[c];


    }
于 2013-08-22T08:00:06.123 回答
0

通常您希望按列分组,以便您可以按组求和,然后在此示例中它会为每个 category_id 提供单独的行

SELECT category_id, SUM(price) as totalprice
FROM products 
GROUP BY category_id 
于 2013-08-22T08:05:43.010 回答
0

在循环内求和而不是使用复杂查询不是更简单、更快捷吗?

你可以简单(更快)select * from table并在你的while循环中在循环时求和。它会比使用子查询进行查询更快

于 2013-08-22T08:20:30.883 回答