0

我很难弄清楚这个查询的连接语法。

假设我从 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

我正在尝试使用某种外部联接来做到这一点,但我根本无法获得正确的语法!

谢谢你的帮助!!

4

1 回答 1

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

祝你好运。

于 2013-01-29T17:30:28.487 回答