如何在不使用公共列的情况下加入两个表?

时间:2017-10-07 04:13:35

标签: sql oracle

Table 1                               Table 2

Column1    Column2    Column3         Column4    Column5    Column3
-------    -------    -------         -------    -------    -------
A          1          a               E          10         a
B          2          b               F          11         b
C          3          c               G          12         c
D          4          d               H          13         d


Table 3                               Table 4  

Column6    Column7    Column4         Column8    Column9    Column6
-------    -------    -------         -------    -------    -------
I          20         E               M          30         I
J          21         F               N          31         J
K          22         G               O          32         K
L          23         H               P          33         L

预期产出

Column1    Column9
-------    -------
C          31
C          32
C          33

如何让输出看到上面的预期?

这是我目前正在学习的Oracle SQL课程。虽然这些表有共同的列,但问题是 NOT 使用公共列,而是使用不同的列来获取预期的输出,同时删除重复项。

2 个答案:

答案 0 :(得分:0)

鉴于已发布的结构,此声明......

 select tableA.column1
        , tableD.column9
 from tableA
      cross join tableD
 where tableA.column1 = 'C'
 and tableD.column9 > 30

...将产生预期的输出。显然它作为一个查询没有意义,所以它是这个问题的恰当答案。

注意:如果OP使用正确的数据模型和实际数据编辑他们的问题,那么我当然会编辑我的答案,使其变得更加明智。

答案 1 :(得分:0)

当我需要创建报告并将两个不同的表合并为一个表时,这对我有用。最简单,不需要JOIN。

选择table1.column1,table4.column9 从表1,表4 WHERE column1 ='c'