es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualizar la columna con el mismo valor para todas las filas que tienen el mismo valor en otra columna.

Dada la siguiente tabla de ejemplo y sus datos:

create table Ejemplo(
   Id int not null,
   Col1 int not null,
   Col2 uniqueidentifier null,
);
insert into Ejemplo 
values 
(1, 1, NULL), (2, 1, NULL), (3, 1, NULL), (4, 2, NULL), (5, 3, NULL), (6, 3, NULL)

Esto genera:

| Id | Col1 | Col2 |
| - | - |- |
| 1| 1|NULL|
| 2| 1|NULL|
| 3| 1|NULL|
| 4| 2|NULL|
| 5| 3|NULL|
| 6| 3|NULL|

Me gustaría ayuda, si es posible, para escribir un script que actualice Col2 para todas las filas con el mismo newid() basado en el mismo valor de Col1.

Ejemplo de la tabla después de ejecutar el script:

| Id | Col1 | Col2 |
| - | - |- |
| 1| 1|bad34c74-f546-4d79-804b-d048d8c7d977|
| 2| 1|bad34c74-f546-4d79-804b-d048d8c7d977|
| 3| 1|bad34c74-f546-4d79-804b-d048d8c7d977|
| 4| 2|e464b79a-b97c-4192-a4f3-327cc147cc4a|
| 5| 3|99475e8f-2788-4c63-817f-4deb130440ab|
| 6| 3|99475e8f-2788-4c63-817f-4deb130440ab|

Aprecio mucho cualquier ayuda.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    ¡Claro! Aquí tienes un script que debería hacer lo que estás buscando:

    UPDATE Ejemplo 
    SET Col2 = newid()
    WHERE Col1 IN (
        SELECT Col1
        FROM Ejemplo
        GROUP BY Col1
        HAVING COUNT(*) > 1
    )
    

    Este script primero selecciona todos los valores distintos de Col1 para los cuales hay más de una fila. Luego, establece Col2 como un nuevo identificador único para todas las filas con alguno de esos valores seleccionados de Col1.

    Después de ejecutar este script, todas las filas con el mismo valor de Col1 tendrán el mismo valor en Col2.

Comments are closed.