1列ではなく2列で重複を見つける方法 質問する

1列ではなく2列で重複を見つける方法 質問する

興味深い 2 つの列を持つ MySQL データベース テーブルがあります。 個別にはそれぞれ重複する可能性がありますが、両方に同じ値を持つ重複があってはなりません。

stone_id各タイトルが異なる限りupsharge、またその逆の場合も、重複があっても構いません。ただし、たとえばstone_id= 412 とupcharge_title= "sapphire" の場合、その組み合わせは 1 回だけ発生します。

これで結構です:

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を使用しています

ベストアンサー1

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

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

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

おすすめ記事