Mysql implementa la misma función de fusión que Oracle

     Hoy en día, en la práctica del proyecto, existe una función que requiere que se combinen dos datos de la misma estructura de tabla. El requisito es que los datos se puedan comparar y luego actualizar e insertar. La combinación en gramática se puede utilizar en Oracle para lograr esta función. Se puede implementar una sintaxis similar en mysql, a saber:

insert into 表名(表字段,表字段,表字段,表字段) select a.字段名,a.字段名,a.字段名 from 表2 a on duplicate key update 表1.待更新字段=表2.字段...;

Ejemplo:

Cree una nueva tabla de prueba:

CREATE TABLE `test`  (
  `key1` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `key2` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `key3` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`key1`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

Cree una nueva tabla test1:

CREATE TABLE `test1`  (
  `key1` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '',
  `key2` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `key3` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`key1`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

Tenga en cuenta que las dos tablas deben tener al menos un índice único que sea el mismo

Luego inserte los datos por separado: prueba

test1:

Ejecute la instrucción sql:

insert into test(key1,key2,key3) 
select a.key1,a.key2,a.key3 from test1 a
on duplicate key update key2 = a.key2,key3 = a.key3;

Resultado de la ejecución: cambios de datos en la tabla de prueba:

Se puede ver que se actualizaron los datos del cuadro rojo de la primera fila y se agregaron los datos de la quinta fila.

Supongo que te gusta

Origin blog.csdn.net/u013804636/article/details/108538386
Recomendado
Clasificación