Búsqueda de sitios web

¿Actualizar los datos de las columnas sin utilizar tablas temporales en MySQL?


Para esto, use la declaración CASE. Esto funcionará incluso sin utilizar tablas temporales. Primero creemos una tabla:

mysql> create table DemoTable
   -> (
   -> UserName varchar(100),
   -> UserStatus varchar(100)
   -> );
Query OK, 0 rows affected (0.74 sec)

Inserte algunos registros en la tabla usando el comando insertar:

mysql> insert into DemoTable values('John','Active');
Query OK, 1 row affected (0.29 sec)

mysql> insert into DemoTable values('Chris','Inactive');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('Bob','Inactive');
Query OK, 1 row affected (0.32 sec)

mysql> insert into DemoTable values('Robert','Active');
Query OK, 1 row affected (0.15 sec)

Muestre todos los registros de la tabla usando la declaración de selección:

mysql> select *from DemoTable;

Producción

Esto producirá el siguiente resultado:

+----------+------------+
| UserName | UserStatus |
+----------+------------+
| John     | Active     |
| Chris    | Inactive   |
| Bob      | Inactive   |
| Robert   | Active     |
+----------+------------+
4 rows in set (0.00 sec)

La siguiente es la consulta para actualizar los datos de la columna usando CASE:

mysql> update DemoTable
   -> set UserStatus=CASE UserStatus WHEN 'Inactive' THEN 'Active' ELSE 'Inactive' END;
Query OK, 4 rows affected (0.28 sec)
Rows matched: 4 Changed: 4 Warnings: 0

Comprobemos los registros de la tabla una vez más:

mysql> select *from DemoTable;

Producción

Esto producirá el siguiente resultado:

+----------+------------+
| UserName | UserStatus |
+----------+------------+
| John     | Inactive   |
| Chris    | Active     |
| Bob      | Active     |
| Robert   | Inactive   |
+----------+------------+
4 rows in set (0.00 sec)

Artículos relacionados: