是否有可能或其他解决方案在单个 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];
}
将 JOIN 与计算总数的子查询一起使用。
SELECT SumTotal, a.*
FROM Table a
JOIN (SELECT SUM(Total) SumTotal
FROM Table) b
你是这个意思吗?
SELECT (SELECT SUM(Total) FROM `table`) totalSum, a.* FROM `table` a
你可以按照@491243 的建议去做
SELECT (SELECT SUM(Total) FROM `table`) AS totalSum, * FROM `table`
但不建议这样做,因为这将导致SQL Engine
计算从数据库中选择的每一行的sum
列total
,并将结果的新列发送到列字段php
中的相同值,totalSum
最好进行 2 个查询。一个用于选择行,另一个用于获取总数
我们可以使用 CROSS APPLY 进行计算。
SELECT SumTotal, A.*
FROM table A
CROSS APPLY (SELECT SUM(Total) SumTotal FROM Table) B
使用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];
}
通常您希望按列分组,以便您可以按组求和,然后在此示例中它会为每个 category_id 提供单独的行
SELECT category_id, SUM(price) as totalprice
FROM products
GROUP BY category_id
在循环内求和而不是使用复杂查询不是更简单、更快捷吗?
你可以简单(更快)select * from table
并在你的while
循环中在循环时求和。它会比使用子查询进行查询更快