2

我需要使用同一个派生表运行 3 个连续查询...我使用的是 MS SQL Server 2008

Select a,b,c from categories inner join (select x,y,z from derivedTable where…) …
Select a,b,c from users inner join (select x,y,z from derivedTable where…) …
Select a,b,c from orders inner join (select x,y,z from derivedTable where…) …

有没有办法以派生表的方式同时运行 3 个 sql 查询

(select x,y,z from derivedTable where ...) 

只执行一次?

我正在使用.net...我想知道是否可以返回 3 个表并使用 3 个表加载数据集。

谢谢

4

1 回答 1

2

你可以使用WITH

注意:正如@Martin 所指出的,被多次WITH评估,所以正确的解决方案是临时表。

WITH derivedTable (x,y,z)
as
(
    select x,y,z
      from derivedTable
      ...
)
SELECT a, b, c
  FROM users
  join derivedTable on ...
 WHERE ...
union all
SELECT a, b, c
  FROM orders
  join derivedtable on ...
 WHERE ... 
union all
 ...

或临时表:

select x,y,z
  into #derivedTable
  from derivedTable
  ...

SELECT a, b, c
  FROM users
  join #derivedTable on ...
 WHERE ...
union all
SELECT a, b, c
  FROM orders
  join #derivedtable on ...
 WHERE ... 
union all
 ...
于 2011-10-15T11:32:05.690 回答