SQLステートメントを使用して、あるテーブルのデータを別のテーブルに挿入する方法

     

序文

     多くの場合、この要件があります。条件に従って1つのテーブルの特定のフィールドのデータをクエリし、それを別のテーブルに挿入する必要があります。これは、テーブル間のデータの転送です。

     このシナリオでは、通常、履歴データを同期する必要があります。

     2つのテーブルがAとBであり、テーブル構造が異なるが、一部のフィールドが同じ意味を持っていると仮定します。

     データが少ない場合は、データを挿入する必要があるテーブルに手動で入力することをお勧めします。しかし、それらが何千もある場合、手動の方法は絶対に受け入れられません。以下の例、SQLを介して達成する方法を参照してください。

1.データの準備

1.テーブル構造

1)ヘルプテーブルt_helpを作成します

CREATE TABLE `t_help` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` int(10) DEFAULT NULL COMMENT '用户ID',
  `problems` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '问题描述',
  `create_date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`ID`)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='帮助表';

2)返信フォームt_replyを作成します

CREATE TABLE `t_reply` (
  `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `help_id` int(10) NOT NULL COMMENT '帮助表_主键ID',
  `problems` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '问题描述',
  `reply` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '回复内容',
  `create_date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='回复表';

2.テーブルデータ

1)ヘルプテーブルt_helpにデータを挿入します

このとき、応答テーブルのt_replyデータは空であり、データは挿入されていません。

2.需要

     ヘルプテーブルt_helpのデータを応答テーブルt_replyに転送したいのですが、フィールド値間の対応する関係は次のとおりです:

    t_helpテーブル                            t_replyテーブル

    問題->問題

    id-> help_id

    現在の時刻-> create_date                                  

    固定値->返信

 説明:

   t_replyテーブルでは、応答値が固定テキスト「default one content」に挿入され、create_dateの値が現在の時刻に挿入され、残りのフィールド はt_helpテーブルに対応します。 

三、実現方法

1.SQLテンプレート

INSERT INTO `目标表`(各个字段)
(
SELECT
	各个字段 或者 固定值
FROM
	来源表 
WHERE
	条件
	);

説明:

1)まず、通常の書き込み方法に従って、ターゲットテーブルの挿入ステートメントを書き込みます。

2)通常、以下に示すように、最初の閉じ括弧)の後に値が続きます。

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....);

ここの直後に括弧のペアが続き、クエリステートメントは括弧内に記述できます。

3)queryステートメントは、ソーステーブルのクエリを書き込みます。

2.SQLの実装

INSERT INTO `t_reply`(help_id,problems,reply,create_date)
(
SELECT
    id,
    problems,
    '默认一个内容',
    NOW( )
FROM
    t_help 
WHERE
    1 = 1
    );

ここで、固定文字列コンテンツの場合は一重引用符で直接ラップし、現在の時刻の場合はNOW()関数を使用します。クエリステートメントは、1 = 1の場合に追加する必要はありません。 

上記のステートメントを実行することにより、t_helpテーブルからt_replyテーブルへのデータ転送が完了します〜

このとき、t_replyテーブルデータは空ではなく、テーブルデータを次の図に示します。

 

おすすめ

転載: blog.csdn.net/u012660464/article/details/114014022