MySQL SQL:SELECT(SELECT ... as variable)FROM

时间:2011-11-24 20:06:31

标签: mysql select

我有一个简单的问题,但我找不到答案(如果该问题在stackoverflow论坛上,请给我一个链接)。 表格包含 orderid 数量列。 如何选择orderid,quantity,total_in_order,其中total_in_order是当前orderid的数量总和 因此该表看起来相同,但附加列。 例如:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

第一种方法:

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

答案 2 :(得分: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)