2011-11-01 38 views
1
ColA(Table1)  ColB(Table2) 
AB3    AB_MNO_3 
AB3    AB_PQR_3 
AB4    AB_MNO_4 
AB4    AB_PQR_4 

我想根據兩個表中的列以及上面顯示的一些非相等值執行Inner Join。因此,Table1可以有AB3,它應該與AB_MNO_3, AB_PQR_3匹配,而AB4應該與AB_MNO_4, AB_PQR_4 匹配,兩個表中這些列中的其餘值匹配。 如果有人提供相同的建議,我們將非常感激。Oracle SQL INNER基於不匹配的值進行連接

回答

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

從你的例子: 我認爲 可樂COLB等於 和 可樂的最後一個字符和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)