2016-04-25 6 views
0

私の問題を解決するために1時間近く検索しましたが、何も見つかりません。Postgresqlがダブルエントリを確認します

ので:

私は部品のためのいくつかの供給業者が列挙されている場所、それはこのようになります(サプライヤー)の名前のテーブルを作成しました:今、私は二重のエントリについては、この表をチェックしたい

insert into S(sno, sname, status, city) 
    values ('S1', 'Smith', 20, 'London'), 
     ('S2', 'Jones', 10, 'Paris'), 
     ('S3', 'Blake', 30, 'Paris'), 
     ('S4', 'Clark', 20, 'London'), 
     ('S5', 'Adams', 30, 'Athens'); 

"city"という列はロンドンとパリになり、私はそれをソノで並べ替えて印刷します。

私はそれは少し難しいのPostgresでのMySQLよりもだということを知っていると私はこのようにそれを試してみました:

SELECT sno, COUNT(city) AS NumOccurencies FROM s GROUP BY sno HAVING (COUNT (city) > 1); 

をしかし、私が得るすべては、私はさまざまな方法を試してみました:(空のテーブルですが、それは常に同じです。私は正直で何をすべきかわからない。あなたの何人かが私をここで助けてくれることを願っています:)。

挨拶マックス

+0

はまた、ケースの違いをチェックするように注意してください。 LOndonは、postgresqlのLondonと同じではありません。 – StingyJack

答えて

0

あなたは少し後方それについて考えています。 snoでグループ化すると、同じsnoの行をすべて見つけられますが、同じcityではありません。代わりにこれを試してください:あなたは、あなたがしたい行を見つけるために、サブクエリとしてそれを使用することができます

SELECT 
    city 
FROM 
    S 
GROUP BY 
    city 
HAVING 
    COUNT(*) > 1 

SELECT 
    sno, sname, status, city 
FROM 
    S 
WHERE 
    city IN 
    (
     SELECT 
      city 
     FROM 
      S 
     GROUP BY 
      city 
     HAVING 
      COUNT(*) > 1 
    ) 
関連する問題