我想在父子关系树表中使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:单行子查询返回多个行
我认为以上更新语句的子查询中选择了两个以上的项目。
有什么办法可以解决此问题。
谢谢。
Joon
答案 0 :(得分:3)
好吧,一个简单的选项是选择-例如-MAX(GUID)as
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可以修复它)还是它们不同,所以您宁愿不使用该方法,而是先修复数据。
此外,我建议您在所有列名称之前添加表别名。