2015-12-07 95 views
1

我正在使用一些人口普查數據,並且需要嵌入查詢並將第一個查詢的結果用作單獨查詢的條件。使用第一個查詢的結果作爲第二個查詢的參數嵌入MS SQL查詢

這是我到目前爲止所。

第一查詢:

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 A馬里科帕縣亞利桑那3817117 3817357 3823609 3870076 3942868 4013164 4087191

第二和這個結果中的第三個數據點'4'&'13',是我第二個查詢所需要的。

查詢是:

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查詢的新手,但我絕不是專家。這遠遠超出我的知識水平。任何人都可以幫助我獲得這個設置?

+0

我相信你正在尋找的是[INNER JOIN(http://www.w3schools.com/sql/sql_join_inner.asp ) –

回答

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 
+0

第一個查詢確實返回多於1行,所以內部連接是我所需要的。這工作完美。謝謝您的幫助。 – gacto

相關問題