PostgreSQLで重複レコードを見つける方法 質問する

PostgreSQLで重複レコードを見つける方法 質問する

現在、次の重複フィールドが許可されている「user_links」という PostgreSQL データベース テーブルがあります。

year, user_id, sid, cid

一意の制約は現在、「id」と呼ばれる最初のフィールドですが、、、がすべて一意であるyearことを確認するための制約を追加しようとしていますがuser_id、この制約に違反する重複値がすでに存在するため、制約を適用できません。sidcid

すべての重複を見つける方法はありますか?

ベストアンサー1

基本的な考え方は、カウント集計を伴うネストされたクエリを使用することです。

select * from yourTable ou
where (select count(*) from yourTable inr
where inr.sid = ou.sid) > 1

内部クエリの where 句を調整して、検索範囲を絞り込むことができます。


コメントには、これに対する別の良い解決策が書かれています (ただし、誰もがコメントを読むわけではありません)。

select Column1, Column2, count(*)
from yourTable
group by Column1, Column2
HAVING count(*) > 1

または短く:

SELECT (yourTable.*)::text, count(*)
FROM yourTable
GROUP BY yourTable.*
HAVING count(*) > 1

おすすめ記事