我需要比較和匹配兩個不同表中兩個字符串的最長匹配,並在有最接近的匹配時更新一個值。如何匹配最長的字符串並更新值?
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