如何从多嵌套连接语句创建新表?

时间:2018-12-14 16:04:58

标签: sql database join sql-server-2012

我正在尝试通过多嵌套联接创建一个新表,但是不断出错:

Incorrect syntax near ')'.

这是连接语句:

select * 
FROM table1
    LEFT JOIN table2
        ON table1.col1 = table2.col1
    FULL OUTER JOIN table3
        ON table3.col1 = table1.col1 
        AND table3.date >= '2017-10-01'

这是我尝试创建表的方式:

select * into newtable from (

select * 
    FROM table1
        LEFT JOIN table2
            ON table1.col1 = table2.col1
        FULL OUTER JOIN table3
            ON table3.col1 = table1.col1 
            AND table3.date >= '2017-10-01'
)

上一个机箱我在做什么错?

2 个答案:

答案 0 :(得分:0)

我将使用CTE(公用表表达式):

with
x as (
select * 
    FROM table1
        LEFT JOIN table2
            ON table1.col1 = table2.col1
        FULL OUTER JOIN table3
            ON table3.col1 = table1.col1 
            AND table3.date >= '2017-10-01'
)
select * into newtable from x

答案 1 :(得分:0)

您根本不需要子查询。只需使用into

select * 
into newtable
FROM table1
    LEFT JOIN table2
        ON table1.col1 = table2.col1
    FULL OUTER JOIN table3
        ON table3.col1 = table1.col1 
        AND table3.date >= '2017-10-01';

当然,select *不会真正起作用,因为您的列名必须唯一。但我猜您是在实际查询中列出了它们。

此外,过滤full outer join中的表也很棘手。我通常为此目的推荐一个子查询。