sql - ORA-01427: 单行子查询在使用 GUID(sys_Guid()) 设置父子关系时返回多行
问题描述
我想让 Id(varchar2) 成为父子关系树表中的 guid 类型。我像那样复制表格
INSERT INTO TEST_TABLE (OLD_ID,
ITEM_NAME,
PARENT_OLD_ID
)
SELECT
OLD_ID,
NAME,
PARENT_OLD_ID
FROM TEST_TABLE ;
然后我想更新表以设置新的父子关系,例如:
UPDATE TEST_TABLE A
SET PARENT_GUID =
(SELECT GUID
FROM TEST_TABLE
WHERE OLD_ID = A.PARENT_OLD_ID);
我得到的错误是:ORA-01427:单行子查询返回多于一行
我认为在上面更新语句的子查询中选择了两个以上的项目。
有什么办法可以解决这个问题。
提前致谢。
俊
解决方案
好吧,一个简单的选择是选择 - 例如 - MAX(GUID) 作为
UPDATE TEST_TABLE A
SET a.PARENT_GUID =
(SELECT MAX(t.GUID) --> this
FROM TEST_TABLE t
WHERE t.OLD_ID = A.PARENT_OLD_ID);
但是您应该调查发生了什么——这些“多行”是相同的(因此 MAX 会修复它),还是它们不同,所以您宁愿不使用这种方法,而是先修复数据。
另外,我建议您在所有列名之前加上表别名。
推荐阅读
- javascript - 了解 jQuery $(this).closest( element );
- apache-flink - Beam 管道部署到 Flink 失败并显示 404
- facebook - Facebook Graph API - 创建测试页面时发出cover_photo
- rest - 身份验证错误:每次将项目添加到 SharePoint 列表时,使用 Microsoft Flow 中的 Microsoft Graph 计划程序 API 创建计划
- go - 如何在另一个模块中使用“GOPATH”之外的模块?
- c# - 为 MS-Word 随机生成数字输入
- apache - 如何使用 www 将非 www 和 http 重定向到 https?
- java - 当我运行我的程序时,我在线程“main”java.lang.NoClassDefFoundError 中收到这种类型的错误异常
- java - Thymelaf - 两个如果在一个 div 中
- java - JTextField 只接受来自我的按钮的一位数字