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.

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

21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL

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.


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

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;

Nota del moderador : no deshaga las actualizaciones válidas de su publicación.
Bhargav Rao
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.