2010-03-25 33 views
6

我有一個包含所有美國郵政編碼的表格。每行包含郵政編碼的城市和州名稱。我試圖列出在多個州中出現的城市列表。如果在同一城市中沒有X個郵政編碼,這不會成爲問題...選擇次數/副本

所以基本上,我只是想讓城市在一個州里算作1而不是算上城市/狀態7次,因爲在該城市/州有2+郵政編碼...

我不太確定如何做到這一點。我知道我需要使用count,但是如何告訴mysql只計算給定的城市/州組合爲1?

+1

什麼是數據庫架構? – 2010-03-25 14:59:15

回答

9
SELECT City, Count(City) As theCount 
FROM (Select City, State From tblCityStateZips Group By City, State) As C 
GROUP By City 
HAVING COUNT Count(City) > 1 

這將返回所有城市,計數,被包含在一個以上的狀態。

格林維爾39
格林伍德2
格林3

0

嘗試使用SELECT DISTINCT

SELECT DISTINCT city, state FROM table GROUP BY city 
0

這是否會做

Select CityName, Count (Distinct State) as StateCount 
From CityStateTable 
Group by CityName 
HAVING Count (Distinct State) > 1 
0

你或許應該創建一個單獨的表郵政編碼,然後避免重複的伎倆。

你要考慮的GROUP BY Aggregate.

1

首先對國家和城市羣,然後小組城市結果:

select City 
from (
    select State, City 
    from ZipCode 
    group by State, City 
) x 
group by City 
having count(*) > 1 
+0

這幾乎就是它!只需要將第一行改爲:SELECT city,COUNT(city)as c – mike 2010-03-25 15:10:23

+0

@mike:那麼你想要每個城市出現多少州?這不是問題所在,所以我沒有將它包含在答案中。 – Guffa 2010-03-25 17:04:01