簡體   English   中英

可以與多個CTE一起使用

[英]Can use select into with multiple cte

可以和多個cte一起使用select嗎? 例如,在下面的代碼中,將第一個cte cte_table的結果插入dbo.table1中,然后定義另一個cte。 這可能嗎?

WITH cte_table 
AS 
( 
SELECT * 
FROM dbo.table
)
INSERT INTO dbo.table1 
SELECT *
FROM [cte_table]
, cte_table2
AS
(
SELECT * 
FROM dbo.table2
)

將所有CTE鏈接起來,然后將其選入。

WITH First_CTE AS
(
    SELECT
        Columns
    FROM
        Schema.Table
    WHERE
        Conditions
),
Second_CTE AS
(
    SELECT
        Columns
    FROM
        Schema.OtherTable
    WHERE
        Conditions
)

SELECT
    Variables
INTO
    NewTable
FROM
    First_CTE A
JOIN
    Second_CTE B
ON
    A.MatchVar = B.MatchVar

如果您以后不需要CTE,但更喜歡使用比子查詢更簡單的方法作為ETL,這將很有幫助。

不,您不能:您會收到錯誤消息,因為不允許使用INTO ,並且正如其他人所指出的,這是有道理的,因為CTE旨在成為可重復的(因而是靜態的)引用。

我還記得在某處讀到了很多語法糖,因為執行sql時將cte解析為派生表。

如果您的情況是記錄集的可重用Re-usability ,則在這種情況下,請使用臨時表或表變量。

例如

Select * Into #temp1 From dbo.table

INSERT INTO dbo.table1 
SELECT * FROM #temp1

SELECT * FROM #temp1 ..... and do some other re-usability operations.

鏈接的Cte工作如下(僅作為示例)

;With Cte1 As ( Select * from table1)
,Cte2 As (Select * from table2)

select c1.*,c2.*
from cte1 c1, cte2 c2

希望您了解何時使用什么以及如何使用。

否您不能在CTE中使用select into。 而且實際上也沒有任何意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM