我需要比较和匹配两个不同表中两个字符串的最长匹配,并在有最接近的匹配时更新一个值。如何匹配最长的字符串并更新值?
Table 1 Table 2
stack1 stack2
ABCDEFG ABC
GHIJKLM ABCDE
PQRSUVW ABCDEF
我需要比较这两个表并匹配closeet一个和更新表1第一排为ABCDEF最接近的匹配,请谁能帮助我。我被困在这里。
这里是我的查询
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)你不能更新一个具有将在子查询中使用的值的表(这可能只有当你的子查询包含你正在更新的表时)。 – Suroot 2011-06-17 03:36:43