Actualización de MySQL Unirse para la actualización de la mesa cruzada

Actualización de MySQL Unirse para la actualización de la mesa cruzada

En las últimas versiones de MySQL, puede realizar una actualización de la mesa cruzada, también conocida como una actualización de la tabla de correlación donde puede unir dos o más tablas. Usando MySQL Join (Inner and Left) y actualización de la consulta, podemos realizar una actualización transversal en pasos muy simples.

Este tutorial lo guiará en cómo realizar actualizaciones de la mesa cruzada MySQL utilizando comandos nativos de MySQL.

Sintaxis básica

La sintaxis general para una consulta de unión de actualización mysql básica es:

Actualizar DB.Tabla 1, DB.Tabla 2,
[Izquierda unirse | Inner Join] DB.Tabla 1 en DB.tabla 1.columna1 = db.Tabla 2.columna2
Establecer DB.tabla 1.colum2 = db.Tabla 2.columna2, db.Tabla 2.columna3 = expresión
Donde [condición]

Desglosemos la consulta de arriba en partes más pequeñas para que podamos entenderlo mejor.

Comenzamos definiendo la tabla principal. En este caso, (db.tabla 1) Seguido por la tabla que queremos unirnos utilizando la declaración de actualización, en este caso, DB.Tabla 2.

NOTA: Es importante especificar al menos una tabla después de la declaración de actualización; De lo contrario, las filas en la tabla no se actualizarán después de la consulta.

En la segunda parte de la consulta, especificamos el tipo específico de unión que queremos realizar, yo.mi., Unión interna o izquierda y un predicado unido. Siempre establezca la consulta de unión inmediatamente después de la consulta de actualización.

Un predicado de unión es una condición de unión específica que evalúa un valor booleano.

En la siguiente parte, establecemos nuevos valores en las columnas de DB.Tabla 1 y DB.Tabla 2.

Por último, establecemos una condición utilizando la cláusula WHERE, que ayuda a limitar las filas que se someten a la actualización.

Caso de uso de ejemplo

Supongamos que tiene dos tablas, llamadas TB1 y TB2; Considere una consulta a continuación para crear tablas y agregar datos.

Crear base de datos si no existe sample_db;
Usar sample_db;
Crear tabla TB1 (
Col1 int (11) no nulo,
Col2 int no nulo,
Clave principal (COL1)
);
Crear tabla TB2 (
Col1 int no nulo auto_increment,
Col2 Varchar (100) no nulo,
Col3 int predeterminado nulo,
Col4 int predeterminado nulo,
Clave principal (COL1)
);
Insertar en valores TB1 (Col1, Col2) (1,0), (2,1), (3,3), (4,4), (5,5);
Insertar en valores TB2 (Col2, Col3, Col4) ("Primero", 1, 500), ("Segundo", 2, 1000), ("Tercer", 3, 1500), ("Cuarto", 4, 2000) , ("Quinto", 5, 2500);

En las tablas creadas con la consulta anterior, podemos realizar una consulta de actualización utilizando la declaración de unión interna ya que las tablas están vinculadas en Col2.

Considere la consulta a continuación:

Usar sample_db;
Actualizar TB2 Inner Un Join TB1 en TB2.Col3 = TB1.Col1 establece col3 = col4 + col4 * 5;

Dado que queremos actualizar los datos en la segunda tabla (COL3) donde obtenemos los valores de las columnas y multiplicamos por 5, en el ejemplo anterior, eliminamos la condición Where porque queremos actualizar todos los registros en la tabla especificada.

Puede confirmar esto utilizando la consulta SELECT como se muestra a continuación:

Seleccionar * de sample_db.tb2;

La salida como se muestra a continuación:

mysql> select * de sample_db.tb2;
+------+--------+-------+------+
| Col1 | Col2 | Col3 | Col4 |
+------+--------+-------+------+
| 1 | Primero | 3000 | 500 |
| 2 | Segundo | 6000 | 1000 |
| 3 | Tercero | 9000 | 1500 |
| 4 | Cuarto | 12000 | 2000 |
| 5 | Quinto | 15000 | 2500 |
+------+--------+-------+------+
5 filas en el set (0.00 seg)

Conclusión

En este tutorial rápido, discutimos cómo usar la consulta de unión de actualización mysql que le permite combinar tablas y actualizar los valores en consecuencia.

Para obtener más información sobre cómo puede expandir esta función, considere los recursos proporcionados a continuación:

https: // dev.mysql.com/doc/refman/8.0/en/actualización.html

https: // dev.mysql.com/doc/refman/8.0/en/unirse.html