2011-10-19 26 views
53

Tengo una tabla con dos columnas DATETIME.SQL establece los valores de una columna igual a los valores de otra columna en la misma tabla

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

Tengo que escribir una consulta que establecerá todas las filas NULL para la columna B iguales a los valores de la columna A.

He tratado this example pero el SQL en la respuesta seleccionada no se ejecuta debido MySQL Workbench doesn Parece que le gusta el FROM en la ACTUALIZACIÓN.

Respuesta

92

suena como si estuviera trabajando en una sola mesa para que algo como esto:

update your_table 
set B = A 
where B is null 
15
UPDATE YourTable 
SET ColumnB=ColumnA 
WHERE 
ColumnB IS NULL 
AND ColumnA IS NOT NULL 
4

No creo que otro ejemplo es 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 
12

lo haría de esta manera:

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

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

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

Si B es nulo, el COALESCE se salta y utiliza A en su lugar.

0

ACTUALIZACIÓN YourTable
SET ColumnB = ColumnA
DONDE
ColumnB ES NULO
Y ColumnA NO ES NULL;

Cuestiones relacionadas