[英]How to match the longest string and update the value?
我需要比較和匹配兩個不同表中兩個字符串的最長匹配項,如果存在最接近的匹配項,則更新一個值。
Table 1 Table 2
stack1 stack2
ABCDEFG ABC
GHIJKLM ABCDE
PQRSUVW ABCDEF
我需要比較這兩個表並匹配一個壁櫥,並將表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:單行子查詢返回多個行
您需要使子查詢僅返回一個匹配項(最長的匹配項)。 以您的情況,MAX應該這樣做。
UPDATE table1 A
SET A.stack1 = (SELECT Max( B.stack2 )
FROM table2 B
WHERE A.stack1 LIKE CONCAT(B.stack2,'%'))
WHERE name = 'name';
另外,您應該考慮什么都不匹配的情況。
ORA-01427錯誤表示子查詢返回多個值-即使使用DISTINCT
。
您需要更正返回多個不同值的案例。 可能有一個匯總函數,例如MAX
或MIN
,但是由於沒有細節,我會毫不猶豫地提出建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.