是否可以多次使用子查询?

Is it possible to use a subquery more than once?

我想知道是否可以在 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 * someTable2 子句中的 (select * from subQuery) 上抛出一个错误 "Invalid Object Name subQuery"。那么有没有一种方法可以多次使用 subQuery 而不必多次添加 table 或 运行 查询来更改第一条语句?

CTE 仅在单个查询的范围内,但查询可以同时更新和输出数据。例如

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