这是一个有效的查询吗? (重复别名)

Is this a valid query? (Repetition of Aliases)

我正在尝试创建嵌套连接语句并使用别名进行编程。让我为您提供我尝试加入的表及其外键的列表。

TABLE1: id (Foreign key)
TABLE2: id (primary key), idx (foreign key)
TABLE3: id (primary key), idx (primary key)
TABLE4: id (primary key), idx (primary key)`

SELECT * 
FROM (((TABLE1 JOIN
        TABLE2
        ON TABLE1.id = TABLE2.id
       ) AS NEW_TABLE JOIN
       TABLE3
       ON NEW_TABLE.id = TABLE3.id AND NEW_TABLE.idx = TABLE3.idx
      ) AS NEW_TABLE JOIN
      TABLE4
      ON NEW_TABLE.id = TABLE4.id AND
         NEW_TABLE.idx = TABLE4.idx
     );

你能告诉我这是否是一个有效的查询并且以这种方式使用别名是否有效?

我不这么认为。我会这样写:

SELECT * 
FROM TABLE1 JOIN
     TABLE2
     ON TABLE1.id = TABLE2.id JOIN
     TABLE3
     ON TABLE1.id = TABLE3.id AND TABLE2.idx = TABLE3.idx
     TABLE4
     ON TABLE1.id = TABLE4.id AND
        TABLE2.idx = TABLE4.idx;

(嗯,实际上,我会使用 table 别名,但这是我的想法。)

括号对您没有任何作用。我还认为重新使用 NEW_TABLE 别名可能会产生错误。

您可能需要嵌套完整的查询:

SELECT * FROM 
  (SELECT * FROM 
    (SELECT * FROM TABLE1 JOIN TABLE2 ON TABLE1.id = TABLE2.id ) A 
    JOIN TABLE3 ON A.id = TABLE3.id AND A.idx = TABLE3.idx) B 
  JOIN TABLE4 ON B.id = TABLE4.id AND B.idx = TABLE4.idx;

虽然,在不知道表格内容的情况下,很难说您可能会得到什么样的结果,或者您的查询是否有效。

格式如下..

SELECT * FROM 
  TABLE1 
     JOIN TABLE2 ON TABLE1.id = TABLE2.id
     JOIN TABLE3 ON Table1.id = TABLE3.id 
        AND Table2.idx = TABLE3.idx
   JOIN TABLE4 ON Table3.id = TABLE4.id 
      AND Table3.idx = TABLE4.idx