是否有可能或其他解决方案在单个sql查询中求和并选择多行,并在循环时打印:
$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
在从数据库中选择的每一行上计算列total
的sum
,并将具有结果的新列发送到列totalSum
字段中具有相同值的php
,
最好进行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
循环中,在循环时求和。它将比使用子查询进行查询更快