ken1234566767
@ken1234566767

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

(SQL)データの重複を取り除いてINSERTする方法について

SQL(MySQL)についての質問です。

CREATE TABLE Grade(
    id CHAR(8) NOT NULL,
    class_name char(8),
    class_id char(5)
    score int(2)
    PRIMARY KEY (id, class_id)
);

のようなテーブルを設定し、中身に

id    class_name   class_id   score
1    classA        00001      100
1    classB        00002      80
2    classA        00001      100
2    classB        00002      20

を挿入しました。
今 新しいテーブル

CREATE TABLE class(
    class_name char(8),
    class_id char(5),
    PRIMARY KEY (class_id )
);

を設定してテーブルGradeのデータ(class_name class_id)を重複なく挿入したいです。

insert into class select distinct class_name, class_id from Grade;

を試しては見たのですが重複によるエラーは改善されませんでした。

MySQL Error (1062): Duplicate entry '00001' for key 'class.PRIMARY'

なるべく新しいテーブル等を作らず手短に実行したいのですが、厳しいでしょうか

0

1Answer

Grade テーブルの id は主キーのようですが重複があるのは何故ですか?

classA, 00003 とか classC, 00001 とかが含まれている場合はどのようにしたいのでしょうか?

1Like

Comments

  1. @ken1234566767

    Questioner

    Grade テーブルの id は主キーのようですが重複があるのは何故ですか?

    本来はGradeテーブルの属性としてscoreもあり、(id, class_id) →scoreという関係があったのですが省略していました。編集して戻しておきました。

    classA, 00003 とか classC, 00001 とかが含まれている場合はどのようにしたいのでしょうか?

    class_idとclass_nameは索引従属のつもりでした。この索引従属を取り除いてGradeテーブルを第二正規形にするというのがコンセプトでした。
    わかりにくくて申し訳ないです

Your answer might help someone💌