質問: こんにちは。 タイトルの通りなのですが、今回SQL文について質問があり投稿させていただきました。 今回の処理でSQL文の「on duplicate key update」というものを使えれば便利だなと思う 処理があり、カラムにUNIQUEを追加しようと思ったのですが 「ALTER TABLE `main_group_to_site` ADD UNIQUE (`group_id`,`site_id`);」 とすると '1-32' は索引 'group_id' で重複しています。というエラーになってしまいます。 個人的に`site_id`も`group_id`もすでに重複した値が登録されてしまっていますのでそれが 原因かと思っています。 このUNIQUEキー初めて使用を試みたのですがこのキーは後程追加したいカラムの値に、すでに 重複する値が設定されている場合は追加することができないのでしょうか? エラーの原因で私が考えている事と違うことが原因であったり、SQL文が間違っているということもあればそれもご指摘していただきたいと思っております。 よろしくお願いいたします。
回答: > > ADD UNIQUE (group_id,site_id) > > > site_idもgroup_idもすでに重複した値が登録されてしまっています > > > 若干認識が違うように見えますが、site_idやgroup_idについて それぞれが重複した値をもっていても問題はありません site_idとgroup_idの組み合わせが重複するとunique属性はつけられません > > すでに重複する値が設定されている場合は追加することができないのでしょうか? > > > むしろ重複させないために属性をつけようとしているのですから 設定がされたら矛盾しますよね? まずは重複しないように調整をした上で条件を追加してください