2012-01-26 3 views
0

거의 동일한 두 개의 테이블이 있습니다하위 항목이있는 INSERT를 수행 할 수 있으며 * 추가 ​​정보를 추가 할 수 있습니까?

  • employee
  • employee_history

두 번째 표는 두 개의 추가 필드가 있습니다.

서브 쿼리가있는 INSERT를 사용하여 employee의 레코드를 employee_history에 복사하고 싶습니다. 정렬의이 같은 :

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 테이블의 모든 열을 선택 후 (시작 또는 목록의 끝에서) 그들이 맞는 곳마다 두 개의 새로운 열을 추가 당신이 등을 실행하면 오류 (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 e.*, 'x', 'y' FROM employee e WHERE id = idQ; 

:

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

관련 문제