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: