— Actualizar la columna serie de la tabla detalle_inventario solo si está vacía y no existen duplicados
UPDATE detalle_inventario AS di
JOIN (
SELECT UUID() AS uuid, detalle_inventario_id
FROM detalle_inventario
WHERE serie IS NULL OR serie = »
LIMIT 2300
) AS temp ON di.detalle_inventario_id = temp.detalle_inventario_id
SET di.serie = CONCAT(‘fecha’, REPLACE(temp.uuid, ‘-‘, »));
-
UPDATE detalle_inventario AS di: Esta es la cláusula de actualización que indica que queremos actualizar la tabladetalle_inventarioy la referenciamos con el aliasdi. -
JOIN (...) AS temp ON di.id = temp.id: Esto es una unión con una subconsulta. La subconsulta selecciona un valor UUID único (UUID() AS uuid) y el identificador único de cada fila en la tabladetalle_inventariodonde la columnaserieestá vacía. El aliastempse utiliza para referirse a los resultados de esta subconsulta. Luego, estamos uniendo estos resultados con la tabla principaldetalle_inventariomediante la coincidencia de los identificadores únicos de fila. -
SET di.serie = CONCAT('fecha', REPLACE(temp.uuid, '-', '')): Esto es lo que se establecerá para cada fila en la columnaseriede la tabladetalle_inventario. Estamos concatenando la cadena ‘fecha’ con el UUID generado (temp.uuid) y luego eliminando los guiones ('-') del UUID utilizando la funciónREPLACE(). -
detalle_inventario: Este es el nombre de la tabla que estamos actualizando. -
serie: Esta es la columna en la tabladetalle_inventarioque estamos actualizando. -
UUID(): Esta es una función de MySQL que genera un valor UUID único. -
idydetalle_inventario_id: Estos son los nombres de las columnas que actúan como identificadores únicos en la tabladetalle_inventario. En la consulta original, se usabaidcomo identificador único, pero si tu tabla tiene un nombre de columna diferente para el identificador único, debes reemplazarlo aquí.