sentencia mysql llenar valores unicos en una tabla

— 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, ‘-‘, »));

  1. UPDATE detalle_inventario AS di: Esta es la cláusula de actualización que indica que queremos actualizar la tabla detalle_inventario y la referenciamos con el alias di.

  2. 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 tabla detalle_inventario donde la columna serie está vacía. El alias temp se utiliza para referirse a los resultados de esta subconsulta. Luego, estamos uniendo estos resultados con la tabla principal detalle_inventario mediante la coincidencia de los identificadores únicos de fila.

  3. SET di.serie = CONCAT('fecha', REPLACE(temp.uuid, '-', '')): Esto es lo que se establecerá para cada fila en la columna serie de la tabla detalle_inventario. Estamos concatenando la cadena ‘fecha’ con el UUID generado (temp.uuid) y luego eliminando los guiones ('-') del UUID utilizando la función REPLACE().

  4. detalle_inventario: Este es el nombre de la tabla que estamos actualizando.

  5. serie: Esta es la columna en la tabla detalle_inventario que estamos actualizando.

  6. UUID(): Esta es una función de MySQL que genera un valor UUID único.

  7. id y detalle_inventario_id: Estos son los nombres de las columnas que actúan como identificadores únicos en la tabla detalle_inventario. En la consulta original, se usaba id como identificador único, pero si tu tabla tiene un nombre de columna diferente para el identificador único, debes reemplazarlo aquí.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *