我有一个类似于以下内容的查询:
SELECT
col1, col2
FROM
(
SELECT
col1, col2
FROM
table1
WHERE
(table1.col1 > 1)
) AS table1
INNER JOIN
(
SELECT
col1, col2
FROM
table1
INNER JOIN
table2
ON
(table1.col1 = table2.col2)
) AS table2
WHERE
(some other clause)
我想知道第二个子查询中的table1是来自第一个子查询的派生表,还是只是" raw"来自原始表1的数据。
我知道我不能在第二个子查询的ON子句中引用table1,虽然用FROM或INNER JOIN声明它似乎工作,这导致我怀疑它是原始表,而不是派生
答案 0 :(得分:1)
在您发布的查询中,第二个子查询的table1
子句中的FROM
引用实际表,而不是第一个子查询中的别名“派生表”。
除非您需要笛卡尔积,否则不要忘记您的ON
条款(加入条件)。
在括号外,在ON
之后的WHERE
子句或AS table2
子句中,table1
将引用别名派生表。