2017-08-02 10 views
0

カラムにはid,name and externalid(FK)というカラムがあるテーブルがあります。この名前は、外部IDが異なる場合にのみ繰り返すことができます。 1より大きいnameカラムのカウント数を調べるにはどうすればよいですか?externalidの値は異なります。私は次のクエリを試しました。しかし、私は結果と確信していません。間違っていると私の質問を修正してください。個別の外部IDの数は、名前が表示された回数に等しい場合にのみ、where句の同じテーブル内の異なる外部キーIDを持つ重複エントリを確認します。

SELECT 
    ff.Name, 
    COUNT(*) count 
FROM tablee ff 
INNER JOIN tablee f 
    ON ff.ID = f.ID AND 
     f.externalid = ff.externalid 
GROUP BY 
    ff.Name 
HAVING 
    COUNT(DISTINCT ff.externalid) = COUNT(*) AND 
    COUNT(*) > 1 

このHAVING句がtrueを返します。

SELECT ff.Name , COUNT(*) count FROM tablee ff 
join tablee f on ff.ID = f.ID 
where f.externalid=ff.externalid 
GROUP BY ff.Name Having COUNT(*) > 1 

答えて

0

私はあなたがする必要があるすべてはあなたのHAVING句を変更することだと思いますそれぞれの名前のグループにこれは、すべての外部IDがその名前グループに対して一意であることを意味します。

私もWHERE節のロジックを結合条件に移しました。これは私にとってはよりきれいに見え、WHERE節になぜその論理があるのか​​わかりません。

関連する問題