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_3
而 AB4
应该匹配 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关键字有啥区别? [复制]
在 Oracle SQL Query 中加入(INNER JOIN)本地 Excel 表 - VBA
mysql 里面JOIN 和 INNER JOIN 区别是啥