使用第一个查询的结果作为第二个查询的参数嵌入MS SQL查询

时间:2015-12-07 22:33:48

标签: sql-server-2014

我正在处理一些人口普查数据,我需要嵌入查询并使用第一个查询的结果作为单独查询的条件。

这是我到目前为止所拥有的。

第一次查询:

SELECT SUMLEV, STATE, COUNTY, PLACE, COUSUB, CONCIT, PRIMGEO_FLAG, FUNCSTAT, NAME, STNAME, CENSUS2010POP, ESTIMATESBASE2010, POPESTIMATE2010, 
                  POPESTIMATE2011, POPESTIMATE2012, POPESTIMATE2013, POPESTIMATE2014
FROM     [SUB-EST2014_ALL]
WHERE  (SUMLEV = '50') AND (CENSUS2010POP > 1000000) AND
                  (CENSUS2010POP < 100000000)

此查询的一个结果是:

50 4 13 0 0 0 0马里科帕县亚利桑那州3817117 3817357 3823609 3870076 3942868 4013164 4087191

此结果中的第二和第三个数据点,&#39; 4&#39; &安培; &#39; 13&#39;,是我第二次查询所需要的。

该查询是:

SELECT SUMLEV, STATE, COUNTY, PLACE, COUSUB, CONCIT, PRIMGEO_FLAG, FUNCSTAT, NAME, STNAME, CENSUS2010POP, ESTIMATESBASE2010, POPESTIMATE2010, 
                  POPESTIMATE2011, POPESTIMATE2012, POPESTIMATE2013, POPESTIMATE2014
FROM     [SUB-EST2014_ALL]
WHERE  (STATE = '4') AND (COUNTY = '13')

我只想显示第二个查询的结果。如果两个结果都显示出来会有很多重复。

我不是SQL查询的新手,但我绝不是专家。这远高于我的知识水平。有人可以帮我搞定吗?

1 个答案:

答案 0 :(得分:0)

如果您的第一个查询只返回1行,那么您可以选择STATE和COUNTRY为变量,然后在第二个查询中使用它们。如果它返回多于1行,则加入两个结果集...

SELECT Q2.*
FROM
(
  SELECT STATE, COUNTY
  FROM [SUB-EST2014_ALL]
  WHERE (SUMLEV = '50') AND (CENSUS2010POP > 1000000) AND (CENSUS2010POP < 100000000)
) Q1

INNER JOIN

(
  SELECT SUMLEV, STATE, COUNTY, PLACE, COUSUB, CONCIT, PRIMGEO_FLAG, FUNCSTAT, NAME, STNAME, CENSUS2010POP, ESTIMATESBASE2010, POPESTIMATE2010, 
              POPESTIMATE2011, POPESTIMATE2012, POPESTIMATE2013, POPESTIMATE2014
  FROM [SUB-EST2014_ALL]
) Q2 ON Q1.STATE = Q2.STATE AND Q1.COUNTRY = Q2.COUNTRY