2012-01-26 15 views
0

私はほとんど同じ2つのテーブルがありますサブセクションを使用してINSERTを実行できますか?AND *追加情報を追加できますか?

  • employee
  • employee_history

2番目の表は、2つの追加フィールドがあります。

employeeのレコードをemployee_historyにサブクエリ付きのINSERTを使用してコピーしたいとします。ソートのこのような:

INSERT INTO employee_history SELECT * FROM employee WHERE id = idQ 

私の問題は、私は2つのフィールドemployee_historyに情報を追加する必要があるということですemployeeが持っていないことがあります。

  • update_code
  • date_of_change

私はデータの2つの新しい作品を追加しながら、上記のINSERT文と同じようにそれをシンプルに保つemployee_historyemployeeからレコードをコピーすることができます方法はありますか?

答えて

2

別名employeeテーブルと、彼らは(リストの最初や最後に)フィットどこのすべての列が2つの新しい列を追加選択:

INSERT INTO employee_history SELECT e.*, 'x', 'y' FROM employee e WHERE id = idQ; 

あなたがテーブルの別名する必要がありますので、

INSERT INTO employee_history SELECT *, 'x', 'y' FROM employee WHERE id = idQ; 

employee_historyタブであなたの二つの追加の列場合、問題は次のようになります。あなたはそのように実行した場合、エラー(ORA-00923: FROM keyword not found where expected)を得るでしょう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

これは、「新しい」フィールドが最後に表示されない状況で非常に便利です。ありがとう、トンアレックス! – Steve

関連する問題