我想知道是否可以在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而不必添加表或多次更改第一条语句来运行查询?
答案 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)