首页 > 解决方案 > 是否可以多次使用子查询?

问题描述

我想知道是否可以在 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)

...

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

标签: sqlsql-servercommon-table-expression

解决方案


CTE 仅适用于单个查询,但查询可以同时更新和输出数据。例如

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

推荐阅读