新しい MySQL テーブルのデータは 1 つ以上のテーブルのデータです (ビジネス シナリオ: リレーショナル テーブルを作成し、古いテーブル データを新しいテーブルにコピーします)

質問

昨日クラスメイトが私に質問しました

ループでデータを挿入するSQLスクリプトを書きたいのですが、データとは
Aテーブルのabフィールドのデータを別のテーブルに置き、Bテーブルのabフィールドをループで追加するというものです。

なぜ Java で書かなかったのかと尋ねると、データ保守のためであり、SQL スクリプトしか使用できないと言いました。ab テーブルの関係は何ですか? 彼は答えました:
いいえ、テーブル B は新しく作成されたリレーショナル テーブルです, テーブル B はリレーションシップを気にする必要はありません。テーブル B は空のテーブルであり、まだデータがありません。過去にテーブルAにデータを入れただけです。

彼がテーブル B はリレーショナル テーブルだと言うとすぐに、彼が何をしようとしているのか分かりました。

解決


INSERT INTO b(字段1 ,字段2) SELECT 字段1,字段2 FROM a; 

遅延

彼は無意識のうちにクエリの前に値を追加しましたが、結果はエラーでした。私は彼に、この文法には値がないと言いました。そして彼はショックを受けました。彼は
チャット記録を私の 2 人の若い生徒に送りましたが、彼らは知らなかったことがわかりました。クエリステートメントを直接追加する場合、値を追加する必要はありません実際、これは古いテーブルのデータを新しいテーブルにコピーする原理です。

理解する

実はテーブルのデータを新しいテーブルにコピーしたいことがあったので、少しだけ知識はありますが、
普段は分解しています。最初にクエリ ステートメントを記述し、次に先頭に追加するフィールド テーブルに挿入を追加します。, このように、見つけたものを追加し、追加したいものにチェックを入れれば問題はありません。
この書き方で新しいリレーションシップ テーブルを追加する場合は、まずテーブルに直接クエリを実行してから、その前に新しいステートメントを追加します。
新しいテーブル

-- 第二步,再在前面加上要新增到哪个表个什么字段,字段的数量和对应的值要对应
insert into student_score(`student_id`,`score_id`)
-- 第一步,先查询出来要新增的所有数据
select a.name,c.id from student a left join score c on a.classNo = c.id

SQLを実行する

成功

おすすめ

転載: blog.csdn.net/weixin_46573158/article/details/126242516