如何在单个sql查询中选择和求和

时间:2013-08-22 07:57:51

标签: php mysql sql

是否有可能或其他解决方案在单个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];
}

6 个答案:

答案 0 :(得分:4)

使用JOIN和子查询来计算总数。

SELECT SumTotal, a.*
FROM Table a
JOIN (SELECT SUM(Total) SumTotal
      FROM Table) b

答案 1 :(得分: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];


    }

答案 2 :(得分:0)

你是说这个吗?

SELECT (SELECT SUM(Total) FROM `table`) totalSum, a.* FROM `table` a

答案 3 :(得分:0)

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

SELECT category_id, SUM(price) as totalprice
FROM products 
GROUP BY category_id 

答案 4 :(得分:0)

你可以像@ 491243建议那样做

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

但建议不要这样做,因为这会导致SQL Engine计算sumtotal,而是从数据库中选择的每一行,并将结果发送到{ {1}}列php列中的值相同,

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

答案 5 :(得分:0)

使用复杂查询而不是更简单,更快速地在循环内求和?

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

进行查询更快