2016-07-07 114 views
1

我有一個狀態表,其狀態分配給不同的國家。有些情況下不同的國家有相同的國家名稱。我怎麼能得到它。我正在嘗試以下查詢。我對嗎。?爲國家獲取重複的州名

SELECT Name , COUNT(*) count 
FROM 
[DB].[dbo].[State] 
GROUP BY 
Name 
Having 
COUNT(*) > 1 

上面的查詢給出了正確的結果。但是下面的查詢是我正在嘗試獲取國家名稱。這不是工作

SELECT st.Name , COUNT(*) count,co.Name 
FROM [DB].[dbo].[State] st 
INNER join [DB].[dbo].Country co on st.CountryID = co.ID 
GROUP BY 
st.Name, 
co.Name 
Having 
COUNT(*) > 1 
+0

試試我的回答更新... – DineshDB

回答

1

是的,這是正確的,所以我不明白什麼是問題?

如果用國家的名字和所有其他信息,希望它可以使用EXISTS()

SELECT * FROM [DB].[dbo].[State] t 
WHERE EXISTS(SELECT 1 FROM [DB].[dbo].[State] s 
      WHERE t.state = s.state and t.country <> s.country) 

編輯:試試這個

SELECT st.Name ,co.Name 
FROM [DB].[dbo].[State] st 
INNER join [DB].[dbo].Country co on st.CountryID = co.ID 
WHERE EXISTS(SELECT 1 FROM [DB].[dbo].[State] st2 
      WHERE st.name = st2.name 
      HAVING COUNT(*) > 1) 
+0

請參閱我的編輯。 – user2998990

+0

@ user2998990看我的。 – sagi

+0

完成..感謝它的工作。 – user2998990

0

希望你的查詢是正確的,

SELECT st.Name,co.Name,COUNT(st.CountryID) [count] 
FROM [DB].[dbo].[State] st 
LEFT join [DB].[dbo].Country co on st.CountryID = co.ID 
GROUP BY 
st.Name,co.Name 
Having 
COUNT(st.CountryID) > 1 
+0

除非他有空值,這不是很合乎邏輯,這個查詢將具有與他完全相同的結果。 – sagi

+0

請參閱我的編輯。 – user2998990

+0

不工作。我沒有得到任何消息。當我沒有照片的時候,我正在排隊。 – user2998990