我有一张桌子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
从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与列名匹配。