【发布时间】:2015-03-05 12:56:16
【问题描述】:
尝试在 SELECT 子句中创建子查询(使用 Oracle 11g)。子查询包括一个表到自身的连接。我收到“ORA-01427:单行子查询返回多行”错误消息(我最大的敌人......)。这是我的代码:
SELECT e.ISBN,
(SELECT p2.PAGE_NUMBERS FROM PAGE_NUMBERS_TABLE p1 INNER JOIN PAGE_NUMBERS_TABLE p2
ON p1.TITLE_CODE = p2.TITLE_CODE
AND p2.FORMAT_CODE = 'HB'
WHERE p1.FORMAT_CODE = 'OC') AS "Page Numbers"
FROM ISBN_TABLE e
希望这是有道理的,如果没有意义,我可以进一步澄清我在这里要做的事情。
谢谢!
【问题讨论】:
-
问题是子查询为每个原始查询行返回多行。要解决此问题,您可以在子查询中使用 max(p2.PAGE_NUMBERS),这将消除错误,但不会给您预期的结果,因此,如果您告诉我们您到底想要做什么,也许我们可以帮助你
-
啊,我明白了 - 是的,添加 MAX 会为所有行提供“6496”,我假设这是整个数据集中的最大值。当我正在寻找构建原始查询时,我已经在stackoverflow.com/questions/28612074/… 上进行了解释,现在我正在尝试将其作为子查询嵌套在 select 语句中。如果我需要进一步澄清,请告诉我!