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