Oracle SQL INNER基于不匹配的值进行连接

时间:2011-11-01 18:19:54

标签: sql oracle oracle11g inner-join

ColA(Table1)     ColB(Table2)
AB3               AB_MNO_3
AB3               AB_PQR_3
AB4               AB_MNO_4
AB4               AB_PQR_4

我想基于两个表中的列来执行Inner Join,其中包含上面显示的一些不相等的值。因此,表1可以AB3AB_MNO_3, AB_PQR_3匹配,而AB4应与AB_MNO_4, AB_PQR_4匹配 两个表中这些列中的其余值确实匹配。 如果有人提供相同的建议,我们将非常感激。

2 个答案:

答案 0 :(得分:1)

SELECT * FROM Table1 tl INNER JOIN Table2 t2 
ON (tl.ColA = t2.ColB OR (tl.ColA ='AB3' AND t2.ColB='AB_MNO_3')
OR (tl.ColA ='AB3' AND t2.ColB='AB_PQR_3') OR (tl.ColA ='AB4' AND t2.ColB='AB_MNO_4')
OR (tl.ColA ='AB4' AND t2.ColB='AB_PQR_4'))

答案 1 :(得分:1)

从您的示例中: 我认为 colA和Colb的前两个字符相等 和 colA的最后一个字符和ColB等于

SELECT * FROM TABLE1 t1 INNER JOIN
TABLE2 t2 ON 
substr(t1.ColA,0,2) =  substr(t2.ColB,0,2) 
AND
substr(t1.cola,length(t1.cola),1) = substr(t2.colb,length(t2.colb),1)