Oracle SQL INNER Join 基于不匹配的值

Posted

技术标签:

【中文标题】Oracle SQL INNER Join 基于不匹配的值【英文标题】:Oracle SQL INNER Join based on non-matching values 【发布时间】:2011-12-19 17:38:09 【问题描述】:
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_3AB4 应该匹配 AB_MNO_4, AB_PQR_4 两个表中这些列中的其余值确实匹配。 如果有人提供相同的建议,将不胜感激。

【问题讨论】:

【参考方案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)

【讨论】:

【参考方案2】:
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'))

【讨论】:

以上是关于Oracle SQL INNER Join 基于不匹配的值的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql中的join关键字和inner join关键字有啥区别? [复制]

INNER JOIN和IN的结合:Oracle Sql

在 Oracle SQL Query 中加入(INNER JOIN)本地 Excel 表 - VBA

mysql 里面JOIN 和 INNER JOIN 区别是啥

oracle inner joinleft joinright join +左边或者右边的区别

sql 的并集UNION和内联结INNER JOIN 有啥区别?感觉结果是一样的。