5

满足选择条件的行的列值的总和是否不仅可以返回每个单独的行,还可以返回多个满足相同条件的组?

例如,考虑:

id  order_id    quantity
1   1           1
2   1           3
3   1           5
4   2           2
5   2           4

MySQL SELECT 查询可以返回以下结果:

id  order_id    quantity    order_sum
1   1           1           9
2   1           3           9
3   1           5           9
4   2           2           6
5   2           4           6

编辑:后续问题:假设结果是从具有多个条件的查询中产生的,那么在最终查询中如何处理这些条件?

4

3 回答 3

6

您可以在“from”子句中使用子查询:

select  t.*, tsum.sumquantity
from t join
     (select t.orderid, sum(quantity) as sumquantity
      from t
      group by t.order_id
     ) tsum
     on t.orderid = tsum.orderid

将它放在“from”子句中的好处是可以有多个变量。例如,您可以添加订单数量、最大数量、恰好 1 个数量出现的次数等等。

于 2012-08-02T20:18:37.160 回答
2

您可以使用子查询:

select  *
,       (
        select  sum(quantity)
        from    YourTable yt2
        where   yt2.order_id = yt1.order_id
        ) as order_sum
from    YourTable yt1
于 2012-08-02T19:40:09.270 回答
1

你需要有一个子查询来SUM计算quantity每个Order_ID

SELECT  a.*, b.order_sum
FROM    myTable a INNER JOIN
            (
                SELECT order_ID, 
                       SUM(quantity) order_sum
                FROM    myTable
                GROUP BY order_ID
            ) b on a.order_ID = b.order_ID
于 2012-08-07T08:41:18.377 回答