2011-11-24 67 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) 
相關問題