A través de una declaración SQL, cómo insertar los datos de una tabla en otra tabla

     

Prefacio

     A veces, a menudo tenemos este requisito: necesitamos consultar los datos de ciertos campos en una tabla de acuerdo con las condiciones y luego insertarlos en otra tabla. Esta es la transferencia de datos entre tablas.

     En este escenario, generalmente se requiere sincronizar datos históricos.

     Suponga que las dos tablas son A y B, y que la estructura de la tabla es diferente, pero algunos campos tienen el mismo significado.

     Si hay menos datos, es mejor ingresarlos manualmente en la tabla donde necesita insertar los datos. Pero si hay miles de ellos, el método manual definitivamente no es aceptable. Consulte el ejemplo a continuación, cómo lograrlo a través de sql.

1. Preparación de datos

1. Estructura de la mesa

1) Crea una tabla de ayuda 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) Crea un formulario de respuesta 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. Datos de la tabla

1) Inserte datos en la tabla de ayuda t_help

En este momento, los datos t_reply en la tabla de respuesta están vacíos y no se insertan datos

2. Demanda

     Quiero transferir los datos de la tabla de ayuda t_help a la tabla de respuesta t_reply. La relación correspondiente entre los valores del campo es la siguiente:

    t_help table                             t_reply table

    problemas -> problemas

    id -> help_id

    Hora actual -> create_date                                  

    Valor fijo -> respuesta

 Descripción:

   En la tabla t_reply, el valor de respuesta se inserta en el texto fijo "contenido predeterminado", el valor de create_date se inserta en la hora actual y los campos restantes  corresponden a la tabla t_help. 

Tres, método de realización

1.Plantilla SQL

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

Descripción:

1) Primero, escriba la declaración de inserción de la tabla de destino de acuerdo con el método de escritura normal.

2) Generalmente, el primer paréntesis de cierre) va seguido de valores, como se muestra a continuación.

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

Aquí va seguido directamente de un par de paréntesis, y la declaración de consulta se puede escribir entre paréntesis.

3) La declaración de consulta escribe la consulta de la tabla fuente.

Implementación 2.SQL

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

Aquí, si es un contenido de cadena fija, envuélvalo directamente con comillas simples, si es la hora actual, simplemente use la función NOW (). La declaración de consulta no necesita agregar donde 1 = 1. 

Al ejecutar la declaración anterior, se completa la transferencia de datos de la tabla t_help a la tabla t_reply ~

En este momento, los datos de la tabla t_reply no están vacíos y los datos de la tabla se muestran en la siguiente figura:

 

Supongo que te gusta

Origin blog.csdn.net/u012660464/article/details/114014022
Recomendado
Clasificación