【发布时间】:2011-06-17 03:32:05
【问题描述】:
我需要比较和匹配两个不同表中两个字符串的最长匹配项,如果有最接近的匹配项,则更新一个值。
Table 1 Table 2
stack1 stack2
ABCDEFG ABC
GHIJKLM ABCDE
PQRSUVW ABCDEF
我需要比较这两个表并匹配壁橱一个并将表 1 第一行更新为最接近的匹配项,请任何人帮助我。我被困在这里了。
这是我的查询
UPDATE table1 A
SET A.stack1 = (SELECT DISTINCT B.stack2
FROM table2 B
WHERE A.stack1 LIKE CONCAT(B.stack2,'%'))
WHERE name = 'name';
有了这个查询,我得到了一个名为
的错误ORA-01427: 单行子查询返回多于一行
【问题讨论】:
-
你有两个问题,a)子选择返回多行;
A.stack1 in (应该解决这个问题。 b) 您不能更新具有将在子选择中使用的值的表(这可能仅在您的子选择包含您正在更新的表时)。