查询上一个查询的结果集

时间:2015-03-31 07:11:45

标签: sql sql-server sql-server-2012 nested-queries

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

4 个答案:

答案 0 :(得分:4)

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

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

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

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

3:使用临时表来存储第一个查询的结果集,如comments中wewesthemenace所建议的那样。

4:使用CTE作为本文中其他answer的thebreiflabb的建议。

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

答案 1 :(得分:3)

您可以使用WITH子句

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

SELECT DISTINCT
    sc.ID
FROM SomeClients sc

答案 2 :(得分:0)

你需要WITH子句。语法是 -

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

答案 3 :(得分:0)

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

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

Select top 50 application_Name
into  resultset
from Applications_ASIS