是否可以在另一个左联接中进行嵌套的左联接?

时间:2018-10-04 09:48:03

标签: sql teradata

所以我想做这样的事情:

SELECT ACC_NO
FROM
TABLENAME A
LEFT JOIN
(
    TABLENAME B
    LEFT JOIN TABLENAME C
    ON B.FIELDNAME = C.FIELDNAME
) D
ON A.FIELDNAME = D.FIELDNAME

我将如何实现?

2 个答案:

答案 0 :(得分:0)

是的,可以尝试如下

SELECT A.ACC_NO,A.FIELDNAME
FROM
TABLENAME A
LEFT JOIN
(
    select B.* from TABLENAME B
    LEFT JOIN TABLENAME C
    ON B.FIELDNAME = C.FIELDNAME
) D
ON A.FIELDNAME = D.FIELDNAME

答案 1 :(得分:0)

是的,您可以

SELECT ACC_NO
FROM TABLENAME A LEFT JOIN
     (TABLENAME B LEFT JOIN
      TABLENAME C
      ON B.FIELDNAME = C.FIELDNAME
     ) -- No alias is necessary
     ON A.FIELDNAME = B.FIELDNAME;

但是,这是不必要且冗长的。相反:

SELECT ACC_NO
FROM TABLENAME A LEFT JOIN
     TABLENAME B
     A.FIELDNAME = B.FIELDNAME LEFT JOIN
     TABLENAME C
     ON B.FIELDNAME = C.FIELDNAME;

我认为您的查询实际上更复杂。这个版本大概相当于:

SELECT A.ACC_NO
FROM TABLENAME A

除非您有兴趣实际看到JOIN可能产生的重复项。