У меня есть стол items (item_id serial, name varchar(10), item_group int)
и стол items_ver (id serial, item_id int, name varchar(10), item_group int)
.
Теперь я хочу вставить строку в items_ver
from items
. Есть ли короткий SQL-синтаксис для этого?
Я пробовал с:
INSERT INTO items_ver VALUES (SELECT * FROM items WHERE item_id = 2);
но я получаю синтаксическую ошибку:
ERROR: syntax error at or near "select"
LINE 1: INSERT INTO items_ver VALUES (SELECT * FROM items WHERE item...
Я сейчас попробовал:
INSERT INTO items_ver SELECT * FROM items WHERE item_id = 2;
Это работало лучше, но я получил ошибку:
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;
Это может быть связано с тем, что в таблицах столбцы определены в другом порядке. Имеет ли значение порядок столбцов? Я надеялся, что PostgreSQL совпадет с именами столбцов.
источник