1. ホーム
  2. mysql

[解決済み] 1列でなく2列で重複を見つける方法

2022-08-17 01:18:40

質問

MySQL データベースのテーブルに、興味のある 2 つのカラムがあります。それぞれは重複することができますが、同じ値を持つ両方の重複は決してあってはなりません。

stone_id は、それぞれの upsharge のタイトルが異なる限り、そして逆である限り、重複することができます。しかし、例えば stone_id = 412 と upcharge_title = "sapphire"この組み合わせは一度だけ発生するはずです。

これはOKです。

stone_id = 412 upcharge_title = "sapphire"
stone_id = 412 upcharge_title = "ruby"

これはダメです。

stone_id = 412 upcharge_title = "sapphire"
stone_id = 412 upcharge_title = "sapphire"

両方のフィールドで重複を見つけるクエリはありますか?また、可能であれば、それを許可しないように私のデータ・ベースを設定する方法はありますか?

私は MySQL バージョン 4.1.22 を使用しています。

どのように解決するのですか?

2つのフィールドの間に複合キーを設定する必要があります。 これには、各行で一意の stone_id と upcharge_title が必要です。

既存の重複を見つけることに関しては、これを試してみてください。

select   stone_id,
         upcharge_title,
         count(*)
from     your_table
group by stone_id,
         upcharge_title
having   count(*) > 1