Mysql 如何对子查询结果的两列进行减法

Mysql 如何对子查询结果的两列进行减法,mysql,subquery,subtraction,Mysql,Subquery,Subtraction,我有这个查询,它工作正常,正如预期的那样,即,它显示了所有列以及每个子查询中的2列 SELECT a.group_id, a.code, a.description_en, c.size_code, ( SELECT SUM(b.qty) FROM receiving_details AS b WHERE b.code = c.size

我有这个查询,它工作正常,正如预期的那样,即,它显示了所有列以及每个子查询中的2列

SELECT 
    a.group_id,
    a.code,
    a.description_en,
    c.size_code,
    (
        SELECT
            SUM(b.qty)
        FROM
            receiving_details AS b
        WHERE
            b.code = c.size_code
    ) AS in_qty,
    (
        SELECT
            SUM(d.qty)
        FROM
            requisition_details AS d
        WHERE
            d. matl_code = c.size_code
    ) AS out_qty
FROM products AS a
INNER JOIN products_sizes AS c ON c.prod_code = a.code
ORDER BY a.group_id ASC, a.code ASC, c.size_code ASC
然而,当我尝试添加这一行时

(in_qty - out_qty) AS balance,
就在'FROM'语句之前,我在'field list'中得到一个未知列'in_qty'的错误

我做错了什么

编辑:

根据公认的答案,我又做了几次修正,得到了我想要的结果

SELECT *, (e.in_qty - e.out_qty) AS balance FROM
(SELECT 
    a.group_id,
    a.code,
    a.description_en,
    c.size_code,
    (
        SELECT
            IFNULL(SUM(b.qty),0)
        FROM
            receiving_details AS b
        WHERE
            b.code = c.size_code
    ) AS in_qty,
    (
        SELECT
            IFNULL(SUM(d.qty),0)
        FROM
            requisition_details AS d
        WHERE
            d. matl_code = c.size_code
    ) AS out_qty
FROM products AS a
INNER JOIN products_sizes AS c ON c.prod_code = a.code) AS e
ORDER BY e.group_id ASC, e.code ASC, e.size_code ASC

不能从
select
语句中引用同一字段。一个选项是将结果移动到另一个子查询中,然后执行计算:

select *, (in_qty - out_qty) AS balance
from (
    SELECT 
        a.group_id,
        a.code,
        a.description_en,
        c.size_code,
        (
            SELECT
                SUM(b.qty)
            FROM
                receiving_details AS b
            WHERE
                b.code = c.size_code
        ) AS in_qty,
        (
            SELECT
                SUM(d.qty)
            FROM
                requisition_details AS d
            WHERE
                d. matl_code = c.size_code
        ) AS out_qty
    FROM products AS a
    INNER JOIN products_sizes AS c ON c.prod_code = a.code
) t
ORDER BY group_id, code, size_code

你从stmt得到了什么3@Drew,抱歉…在此之前,'FROM products AS'查看@sgeddes所说的,否则另一个包装器将使该列别名工作。这意味着另一个使用派生表的外部包装器拥有它们available@Drew,是的,我刚刚读了斯盖德斯的回复,并接受了它作为答案。谢谢你的帮助。@sgedes…太好了!经过几次修正后,我终于得到了我想要的结果。你的回答提供了途径。谢谢!