单行子查询returns多行-SQL查询

Single-row subquery returns more than one row - SQL Query

我正在写一个 SQL 查询 returns 最常用的产品名称。

当我 运行 它时,我得到 单行子查询 returns 多行 错误,我现在知道如何修复它.

这是我的查询。

CREATE OR REPLACE VIEW mostUsed AS
SELECT a.article_name, SUM(p.quantity) AS numberOfItems
FROM ARTICLE a, ITEM p
WHERE p.fk_id_article = a.id_article
GROUP BY a.article_name
HAVING SUM(p.quantity) >= (SELECT MAX(p.quantity) FROM ITEM);

SELECT ARTICLE_NAME, numberOfItems
FROM mostUsed
WHERE numberOfItems = (SELECT MAX(numberOfItems) FROM mostUsed);

感谢任何有关修复它的帮助。谢谢!

问题是 outerquery 列可以在 subquery 中引用。

(SELECT MAX(p.quantity) FROM ITEM)

由于您使用 p.quantity 值是从外部 table ITEM p 中获取的,而不是 subquery 中的 Item table 和外部Item table 按 a.article_name 分组,因此它返回了不止一行。

所以从 subquery 中删除别名 P 您的问题将得到解决

SELECT a.article_name, SUM(p.quantity) AS numberOfItems
FROM ARTICLE a, ITEM p
WHERE p.fk_id_article = a.id_article
GROUP BY a.article_name
HAVING SUM(p.quantity) >= (SELECT MAX(quantity) FROM ITEM)