registros - insertar informacion de una tabla a otra sql
PostgreSQL: insertar desde otra tabla (2)
Puedes usar coalesce:
insert into destination select coalesce(field1,''somedata''),... from source;
Estoy tratando de insertar datos en una tabla desde otra tabla y las tablas tienen solo una columna en común. El problema es que TABLE1 tiene columnas que no aceptarán valores nulos, así que no puedo dejarlas vacías y no puedo obtenerlas de TABLE2.
Tengo TABLE1: id, col_1 (no nulo), col_2 (no nulo), col_3 (no nulo)
y TABLA2: id, col_a, col_b, col_c
entonces, ¿cómo podría insertar id de TABLA2 a TABLA1 y llenar el col_1-3 con cadenas codificadas como "datos1", "datos2", "datos3"?
INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something";
resultará en:
ERROR: el valor nulo en la columna "col_1" viola la restricción no nula
Simplemente suministre valores literales en SELECT:
INSERT INTO TABLE1 (id, col_1, col_2, col_3)
SELECT id, ''data1'', ''data2'', ''data3''
FROM TABLE2
WHERE col_a = ''something'';
Una lista de selección puede contener cualquier expresión de valor :
Pero las expresiones en la lista de selección no tienen que hacer referencia a ninguna columna en la expresión de la tabla de la cláusula FROM; pueden ser expresiones aritméticas constantes, por ejemplo.
Y una cadena literal es sin duda una expresión de valor.