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