查询先前查询的结果集

Querying the Result set of a Previous Query

我有一个查询 Query1 = Select Name from table where some Criteria。 现在这个查询returns当然是一个结果集,我想要的是查询这个查询的结果集,例如我只想要上面查询select Distinct(Name) from Query1中的唯一名称。我应该提一下,我知道我可以在 Query1 中使用 distinct 但这只是一个例子我的真实场景有些不同,我想知道的是是否可以查询先前查询的结果集。 我正在使用 SQL Server 2012。

您可以使用 WITH 子句

WITH SomeClients AS (
    SELECT
        c.ID
    FROM Clients c
    WHERE c.Name LIKE '%hello%'
)

SELECT DISTINCT
    sc.ID
FROM SomeClients sc

有几种方法可以解决这个问题:

1: 从第一个查询创建一个视图,运行 第二个查询在视图上创建。

2:嵌套两个查询,如下所示:

SELECT DISTINCT [Name]
FROM (
  SELECT [Name] 
  FROM table 
  WHERE some Criteria
) As InnerQuery

3:使用临时 table 存储第一个查询的结果集,正如 wewesthemenace 在 .

中所建议的那样

4:按照另一个 中的 thebreiflabb 的建议使用 CTE 到此 post。

就我个人而言,我可能会选择第一个或第二个选项,具体取决于您是否还需要单独使用第一个查询。

您需要 WITH 子句。语法是-

WITH someName AS(
 //Your Db Query
)
SELECT * FROM someName // OR Whatever you want

您可以创建一个 table 来临时存储结果并在新查询中使用该 table

DECLARE @resultset table (
    ID   int identity(1,1) not null
  , name nvarchar(100)
)

Select top 50 application_Name
into  resultset
from Applications_ASIS