嵌套表联接

时间:2019-09-24 10:19:24

标签: sql oracle join

我将C表作为主表,将col3上的E表与左表联接在一起,并将col4上的F表与左表联接。

(
    FROM A
    LEFT OUTER JOIN B ON A.col1 = B.col1
    LEFT OUTER JOIN C ON A.col2 = C.col2
    LEFT OUTER JOIN E ON A.col3 = E.col3
    LEFT OUTER JOIN F ON A.col4 = F.col4

)temptab1

需要退出的人

(
   FROM C ON
    LEFT OUTER JOIN E ON C.col3 = E.col3
    LEFT OUTER JOIN F ON C.col4 = F.col4

)temptab2

现在,我应该在(C.Col3 = temptab2.Col3 OR C.Col4 = temptab2.Col4)上将temptab1加入temptab2吗?要么 我应该在(C.Col3 = temptab2.Col3 AND C.Col4 = temptab2.Col4)上将temptab1加入temptab2吗?

如果我必须使用OR子句,这会大大阻碍查询的性能...

我尝试使用联合子句代替OR子句。尽管如此,查询性能仍没有改善...

请提出更好的查询。

1 个答案:

答案 0 :(得分:0)

temptab1是A的所有行。temptab2是C的所有行。temptab1是与temptab2的LEFT JOIN,这导致A的所有行。 您可以使用CASE语句来识别A,B,C,D,E,F中的匹配值,并使用temptab2删除Join。 抱歉,无法发表评论...