2016-07-07 9 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

はい、それはので、私は質問が何であるかを理解していないが正しいのか?

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) 

EDIT:あなたは国の名前とすべての他の情報とそれをしたい場合は

あなたはEXISTS()を使用することができますこの

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

関連する問題