2011-11-24 68 views
1

我有一个简单的问题,但我找不到答案(请给我一个链接,如果这个问题是在stackoverflow论坛)。 表有orderid数量列。 如何选择orderid,quantity,total_in_order,其中total_in_order是当前orderid的数量总和 因此,该表看起来相同,但带有额外的列。 例子:MySQL SQL:SELECT(SELECT ... as variable)FROM

orderid - quantity - **total_in_order** 
1  - 43  - **78** 
1  - 24  - **78** 
1  - 11  - **78** 
2  - 31  - **31** 
3  - 9  - **25** 
3  - 16  - **25** 

那么,如何修改SELECT orderid, quantity, SUM(quantity) from orders;? 谢谢。

回答

3

使用连接到一个子查询中。在子选择中计算每个orderid的总数。

SELECT 
    orders.orderid, 
    orders.quantity, 
    totals.total_in_order 
FROM orders 
JOIN 
(
    SELECT orderid, SUM(quantity) AS total_in_order 
    FROM orders 
    GROUP BY orderid 
) AS totals 
ON orders.orderid = totals.orderid 
+0

看起来像我给出了完全相同的答案。抱歉,在我发布我的视频之前,我没有看到你的视频。 –

1

第一种方法:

SELECT 
    O.orderid, 
    O.quantity, 
    (select sum(O2.quantity) 
    from orders O2 
    where O.orderid = O2.orderid) as qty 
from 
    orders O 
+0

我相信这会做出订单中的每一行的子选择,你应该检查出@Marks的答案。 –

+0

优化器使他们肮脏的工作。 – danihp

0

这是一个关于如何使用子查询来实现的例子。它应该完成这项工作。

SELECT A.orderid 
    A.quantity 
    B.sum 
FROM 
    orders A JOIN (SELECT orderid, sum(quantity) as sum from orders group by orderid) as B on(A.orderid=B.orderid) 
相关问题