查询先前查询的结果集
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
我有一个查询 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:按照另一个
就我个人而言,我可能会选择第一个或第二个选项,具体取决于您是否还需要单独使用第一个查询。
您需要 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