一尘不染

如何在sql中重用子查询?

sql

我有如下查询

select columns
from (select columns1
      from result_set
      where condition_common and condition1) as subset1
      join
      (select columns2
       from result_set
       where condition_common and condition2) as subset2 
      on subset1.somekey = subset2.somekey

我想以某种方式重用

select columns
from result_set
where condition_common

我简化了上面的查询,但是实际上上面的选择是巨大而复杂的。我不想负担确保两者同步

我没有任何以编程方式重用它的方法。排除了T-SQL。我只能写简单的查询。这是应用程序的限制。

有没有一种方法可以在单个语句中重用相同的子查询


阅读 139

收藏
2021-03-10

共1个答案

一尘不染

如果您使用的是SQL Server 2005+,请使用公用表表达式(CTE):

with cte as (
      select columns
      from result_set
      where condition_common
    )
select columns
from cte  as subset1
      join
      cte as subset2 
         on subset1.somekey = subset2.somekey
where otherconditions
2021-03-10