안녕하세요
질문 드리고 싶은것은 테이블에서 연도 필드가 MAX값을 갖는 데이터를 지우고 싶습니다. 단, 데이터들은 개인 ID로 GROUP 되어 있고 그 그룹에서 MAX값을 지우는 것입니다.
근본적으로 원하는 일은 이력 테이블에서 최신연도의 정보와 과거 정보를 두 테이블로 분리하는 것입니다.
현재 이력 테이블(emp_hist)은 다음과 같습니다.
hist_Year |
emp_Id |
emp_Salary |
2017 |
19 |
2400000 |
2016 |
19 |
2300000 |
2017 |
18 |
2100000 |
2016 |
17 |
2000000 |
2015 |
17 |
1900000 |
2017 |
16 |
2300000 |
2016 |
16 |
2100000 |
위와 같은 테이블의 값들 중 각 emp_Id로 Group By한 값들 중 MAX(hist_Year)인 데이터들과 나머지를 분리해서 두 테이블에 저장하고자 합니다. (각 emp_Id 별 최신 값과 이력 값을 분리)
이를 위해 MAX(hist_Year)인 데이터들을 새로운 테이블(emp_new)에 저장하고 emp_hist에서 새로 저장된 데이터들을 삭제하려고 합니다.
일단 새로운 테이블에는 다음 쿼리를 사용하여 MAX(hist_Year)의 데이터들을 저장하였습니다.
INSERT INTO emp_new (SELECT ehist.* FROM emp_hist AS ehist INNER JOIN (SELECT emp_Id, MAX(hist_Year) AS hist_Year FROM emp_hist GROUP BY emp_Id) AS emax ON ehist.emp_Id = emax.emp_Id AND ehist.hist_Year = emax.hist_Year)
그런데 이 데이터들을 삭제하려고 단순히 INSERT INTO 부분을 DELETE FROM으로 바꾸니 에러가 납니다.
혹시 방법을 아시는 분들 답변 주시면 감사드리겠습니다.
감사합니다. |