【发布时间】:2018-08-13 11:22:49
【问题描述】:
我正在尝试通过子查询更新表,但出现以下错误:
ORA-01427: 单行子查询返回多于一行 01427. 00000 - “单行子查询返回多于一行”
我想在列中插入第三个表格的内容。
我的查询:
UPDATE GH212_TABLE1
SET GH212_LINK = (SELECT GH201_TABLE1.GH201_ATTRIBUTEX
FROM GH210_TABLE3
LEFT JOIN GH201_TABLE1
ON GH210_TABLE3.GH210_GH201_ID = GH201_TABLE1.GH201_ID
INNER JOIN GH212_TABLE1
ON GH212_TABLE1.GH212_GH210_ID = GH210_ID
WHERE GH212_TABLE1.GH212_GH210_ID=GH210_TABLE3.GH210_ID
GROUP BY GH201_ATTRIBUTEX)
WHERE GH212_TABLE1.GH212_ATTRIBUTEY='11';
我不确定如何正确链接表格,以便从一个特定对象中获取属性。
任何帮助将不胜感激。
干杯, 法比
编辑:感谢您的回复!我很擅长多行的问题,但不知何故我无法解决它。即使我尝试了不同的查询。但是威廉·罗伯逊的解决方案似乎有效,非常感谢!!
【问题讨论】:
-
错误很明显:您的子查询返回多行,这在更新的上下文中没有意义,更新的 RHS 只需要一个值任务。您应该向我们展示一些示例数据来解释您正在尝试做什么。
-
您可以在选择语句中添加 rownum =1 并且您不应该得到错误,但这是逻辑错误。
标签: oracle loops join sql-update insert-update