unk*_*own 3 sql-server common-table-expression sql-insert
我想使用 CTE 从另一个表插入一个表。我之前尝试过加分号with,但不起作用。
这是我的查询:
INSERT INTO [autoFIE2].[dbo].[tbl_article_type_parent_child] ([art_typ_parent_index], [art_typ_child_index])
WITH article_type_list AS
(
SELECT
art_typ_child_index, art_typ_parent_index
FROM
[autoFIE2].[dbo].[tbl_article_type_parent_child]
WHERE
art_typ_parent_index IS NULL
UNION ALL
SELECT
a.art_typ_child_index, a.art_typ_parent_index
FROM
[autoFIE2].[dbo].[tbl_article_type_parent_child] A
INNER JOIN
article_type_list as AL ON a.art_typ_parent_index = al.art_typ_child_index
WHERE
a.art_typ_parent_index IS NOT NULL)
SELECT *
FROM article_type_list;
Run Code Online (Sandbox Code Playgroud)
执行此语句时出错:-
消息 156,级别 15,状态 1,第 4
行关键字“with”附近的语法不正确。消息 319,级别 15,状态 1,第 4 行
关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一个语句必须以分号终止。
我应该怎么做才能将这些分层数据插入到另一个表中。有什么建议吗?
声明第cte一个,然后从 cte 的选择列表中插入:
;WITH article_type_list AS
(
SELECT
art_typ_child_index, art_typ_parent_index
FROM
[autoFIE2].[dbo].[tbl_article_type_parent_child]
WHERE
art_typ_parent_index IS NULL
UNION ALL
SELECT
a.art_typ_child_index, a.art_typ_parent_index
FROM
[autoFIE2].[dbo].[tbl_article_type_parent_child] A
INNER JOIN
article_type_list as AL ON a.art_typ_parent_index = al.art_typ_child_index
WHERE
a.art_typ_parent_index IS NOT NULL
)
INSERT INTO [autoFIE2].[dbo].[tbl_article_type_parent_child]
([art_typ_parent_index], [art_typ_child_index])
SELECT * FROM article_type_list;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7019 次 |
| 最近记录: |