Tengo una mesa items (item_id serial, name varchar(10), item_group int)
y una mesa items_ver (id serial, item_id int, name varchar(10), item_group int)
.
Ahora quiero insertar una fila items_ver
desde items
. ¿Hay alguna sintaxis SQL corta para hacer esto?
He intentado con:
INSERT INTO items_ver VALUES (SELECT * FROM items WHERE item_id = 2);
pero me sale un error de sintaxis:
ERROR: syntax error at or near "select"
LINE 1: INSERT INTO items_ver VALUES (SELECT * FROM items WHERE item...
Ahora probé:
INSERT INTO items_ver SELECT * FROM items WHERE item_id = 2;
Funcionó mejor pero recibí un error:
ERROR: column "item_group" is of type integer but expression is of type
character varying
LINE 1: INSERT INTO items_ver SELECT * FROM items WHERE item_id = 2;
Esto puede deberse a que las columnas se definen en un orden diferente en las tablas. ¿Importa el orden de las columnas? Esperaba que PostgreSQL coincidiera con los nombres de las columnas.
fuente