SQL establece los valores de una columna iguales a los valores de otra columna en la misma tabla

94

Tengo una tabla con dos columnas DATETIME.

Uno de ellos nunca es NULL, pero uno de ellos a veces es NULL.

Necesito escribir una consulta que establezca todas las filas NULL para la columna B iguales a los valores en la columna A.

Probé este ejemplo, pero el SQL en la respuesta seleccionada no se ejecuta porque a MySQL Workbench no parece gustarle el FROM en la ACTUALIZACIÓN.

usuario1002358
fuente

Respuestas:

156

Parece que está trabajando en una sola tabla, así que algo como esto:

update your_table
set B = A
where B is null
mu es demasiado corto
fuente
21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
Ícaro
fuente
20

Lo haría de esta manera:

UPDATE YourTable SET B = COALESCE(B, A);

COALESCE es una función que devuelve su primer argumento no nulo.

En este ejemplo, si B en una fila determinada no es nulo, la actualización no es operativa.

Si B es nulo, COALESCE lo omite y usa A en su lugar.

Bill Karwin
fuente
5

No creo que ese otro ejemplo sea lo que estás buscando. Si solo está actualizando una columna de otra columna en la misma tabla, debería poder usar algo como esto.

update some_table set null_column = not_null_column where null_column is null
rwilliams
fuente
1

Aquí hay un código de muestra que podría ayudarlo a enfrentar la Columna A a la Columna B:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
Waruna Manjula
fuente
Nota del moderador : no deshaga las actualizaciones válidas de su publicación.
Bhargav Rao