2012-01-26 91 views
0

我有兩個表幾乎相同:你可以用subuery *和*添加附加信息嗎?

  • employee
  • employee_history

第二個表有兩個附加字段。

我想從employee複製一條記錄到employee_history使用插入子查詢。的排序是這樣的:

INSERT INTO employee_history SELECT * FROM employee WHERE id = idQ 

我的問題是,我需要添加信息到2場employee_historyemployee沒有:

  • update_code
  • date_of_change

有沒有一種方法,我可以複製從employeeemployee_history與同時增加數據的2個新的上述插入語句保持它的簡單的像一個記錄?

回答

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標籤中的兩個附加列le在employee表中列的列表中間。在這種情況下,你必須單獨選擇每一列。

+0

酷!這是一個超級方便的方法!謝謝約翰! – Steve

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 
+0

這對於最後「新」字段不合適的情況非常有用。感謝Alex Alex! – Steve

相關問題