我正在最艰难的时间找出此查询的连接语法。
假设我从Oracle SQL查询中得到以下结果:
结果1:
Id1: Id2: Char1: Char2: ... CharN:
123a ABC c1a c2a ... cNa
123b DEF c1b c2b ... cNb
而且,在同一个数据库中,我有一个基于Id2
的“映射表”,只需以下内容:
映射表:
Id1: Id2:
123a ABC
234a ABC
345a ABC
456a ABC
123b DEF
234b DEF
而且,现在我要做的是复制Id1
匹配的映射表中每个Id2
的结果 - 给我最终结果:
期望的结果:
Id1: Id2: Char1: Char2: ... CharN:
123a ABC c1a c2a ... cNa
234a ABC c1a c2a ... cNa
345a ABC c1a c2a ... cNa
456a ABC c1a c2a ... cNa
123b DEF c1b c2b ... cNb
234b DEF c1b c2b ... cNb
换句话说,在Id1
匹配的映射表中为每条记录更改Id2
重复结果。
我正在尝试使用某种外部联接,但我根本无法正确理解语法!
感谢您的帮助!!
答案 0 :(得分:1)
如果我正确理解你的问题,你不想加入Id1,而是加入Id2。试试这个:
SELECT M.Id1, M.Id2, R.Char1, R.Char2
FROM Mapping M
JOIN Result1 R ON M.Id2 = R.Id2
如果您在Result1表中使用Id2重复行,则可能会返回重复记录,在这种情况下,您必须告诉我们与哪个记录匹配或使用重复记录。
这是SQL Fiddle。
祝你好运。