我有两张桌几乎相同:
employee
employee_history
第二个表有两个额外的字段。
我想使用带有子查询的INSERT将记录从employee
复制到employee_history
。有点像这样:
INSERT INTO employee_history SELECT * FROM employee WHERE id = idQ
我的问题是,我需要在employee_history
没有的employee
字段中添加信息:
update_code
date_of_change
。我是否有办法将记录从employee
复制到employee_history
,与上面的插入语句一样简单,同时添加2个新的数据?
答案 0 :(得分:3)
这样的东西?
INSERT INTO employee_history
SELECT emp.field1, emp.field2, emp.field3, 'new value A', 'new value b'
FROM employee emp
WHERE emp.id = idQ
答案 1 :(得分:2)
将employee
表别名并选择所有列,然后在它们适合的任何位置添加两个新列(在列表的开头或结尾):
INSERT INTO employee_history SELECT e.*, 'x', 'y' FROM employee e WHERE id = idQ;
您需要为表格设置别名,因为如果您按原样运行它会收到错误(ORA-00923: FROM keyword not found where expected
):
INSERT INTO employee_history SELECT *, 'x', 'y' FROM employee WHERE id = idQ;
问题是如果employee_history
表中的两个附加列位于employee
表中列的中间位置。在这种情况下,您必须单独选择每列。