可以多次使用子查询吗?

时间:2019-10-17 19:56:58

标签: sql sql-server common-table-expression

我想知道是否可以在SQL中多次使用子查询。

例如:

with subQuery as (
select id from someTable1
)
update someTable2
set someValue = 1
where id in (select * from subQuery)

select * from someTable2
where id in (select * from subQuery)

...

截至目前,SQL在(select * from subQuery)子句中的select * someTable2上引发了错误,提示“无效的对象名称subQuery”。那么,有没有一种方法可以多次使用subQuery而不必添加表或多次更改第一条语句来运行查询?

1 个答案:

答案 0 :(得分:1)

CTE仅在单个查询的范围内,但是查询可以同时具有UPDATE和OUTPUT数据。例如

with subQuery as (
select id from someTable1
)
update someTable2
set someValue = 1
output inserted.*
where id in (select * from subQuery)