INNER JOIN之前的UNION

Ant*_*tov 6 sql union inner-join

为什么我在INNER JOIN之前使用UNION就像这样

    select some_table1.some_column1,
           some_table1.some_column2
    FROM some_table1
    UNION ALL
    select some_table2.some_column1,
           some_table2.some_column2
    FROM some_table2
    INNER JOIN  some_table3
    ON  some_table3.some_column1 = some_table1.some_column1 
Run Code Online (Sandbox Code Playgroud)

我有一个错误:无法绑定多部分标识"some_table3.some_column1"?所有数据类型都兼容.

Tar*_*ryn 21

您收到错误,因为它不是有效的SQL语法. UNION ALL语法是:

SELECT <column1>
FROM <table1>
UNION ALL
SELECT <column1>
FROM <table2>
Run Code Online (Sandbox Code Playgroud)

您无法像尝试那样从任一查询中引用列.如果你想引用,那么你会想要使用这样的东西:

select *
from 
(
    select some_table1.some_column1, some_table1.some_column2
    FROM some_table1
    UNION ALL
    select some_table2.some_column1, some_table2.some_column2
    FROM some_table2
) t1
INNER JOIN some_table3
ON  some_table3.some_column1 = t1.some_column1 
Run Code Online (Sandbox Code Playgroud)