获取国家/地区的重复州名称

时间:2016-07-07 06:45:04

标签: sql-server

我有一个状态表,其中的状态分配给不同的国家/地区。在某些情况下,不同国家/地区的州名相同。我怎么能得到它。我正在尝试以下查询。我是对的。?

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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