MySQL:在子查询中使用派生表

时间:2014-05-22 16:47:45

标签: mysql

我有一个类似于以下内容的查询:

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声明它似乎工作,这导致我怀疑它是原始表,而不是派生

1 个答案:

答案 0 :(得分:1)

在您发布的查询中,第二个子查询的table1子句中的FROM引用实际表,而不是第一个子查询中的别名“派生表”。

除非您需要笛卡尔积,否则不要忘记您的ON条款(加入条件)。

在括号外,在ON之后的WHERE子句或AS table2子句中,table1将引用别名派生表。