【发布时间】:2026-02-02 10:25:01
【问题描述】:
我有这个查询,它按预期工作正常,即它显示了所有列以及每个子查询的 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
【问题讨论】:
-
从 stmt 得到什么,你有 3 个
-
@Drew,对不起...在此之前,'FROM products AS'
-
查看@sgeddes 所说的内容,否则另一个包装器可以使该列别名起作用。这意味着另一个使用派生表的外部包装器可以使用它们
-
@Drew,是的,我刚刚阅读了 sgeddes 的回复并接受了它作为答案。也感谢您的帮助。
标签: mysql subquery subtraction