2014-09-30 4 views
0

MySQL에서 약간의 의문이 있습니다. 한 테이블에서 다른 테이블로 데이터를로드하는 동안 나는 하나의 문제에 직면MySQL에서 동적으로 누락 된 열을 처리하십시오.

첫 번째 테이블 : EMP

id | name | sal | deptno | loc | referby 
1 | abc | 100 |  10 | hyd | xyz 
2 | mnc | 200 |  20 |chen | pqr 

초 테이블 :

id | name | sal | deptno | loc | referby 

지금 나는에 emp 테이블 데이터를로드 할 emprefers emprefers 테이블. 내가

내가 쿼리를 실행
insert into emprefers select * from emp after 

같은 쿼리를 작성, 데이터는 다음과 같은 emprefers 테이블에로드 :

id | name | sal |deptno | loc |referby 
1 | abc | 100 | 10 | hyd | xyz 
2 | mnc | 200 | 20 | chen | pqr 

은 이제 동일한 쿼리를 두 번째로 달렸다. 실패했습니다. 이유는 이름 열이 emp 테이블에서 삭제 되었기 때문입니다.

내가 좋아하는 쿼리를 편집 : 다시 편집 된 쿼리를 실행 한 후, 현재 기록은 emprefers 테이블에로드되는 데이터는 아래와 같다

insert into emprefers select id,'null'as name,sal,deptno,loc,referby from emp 

:로드하기 전에

id |  name |  sal  |deptno  | loc   |referby 
1 |  null |  100  |10   | hyd   | xyz 
2 |  null |  200  |20   |chen   | pqr 

때마다 emprefers 테이블 emprefers 테이블 데이터를 잘라냅니다. 그리고 emprefers 테이블 구조는 변경되지 않았습니다.

다시 한번 동일한 쿼리를 다시 실행했습니다. 쿼리가 실패했습니다. 이유는 emp 테이블에 saldeptno 열이 없기 때문입니다.
다시 쿼리를 편집하고 싶지 않으므로 emp 테이블에서 삭제할 열을 알 수 없습니다. 이번에는 문제를 해결하고 싶습니다.
테이블에서 열을 사용할 수있는 경우 두 번째 테이블에 데이터를로드 한 다음 데이터를로드하십시오. 그렇지 않으면 null 또는 해당 열의 값을 전달해야합니다.
열이 있는지 여부를 확인하는 쿼리를 작성하는 방법과 같은 열을 검색 할 수있는 쿼리가있는 경우 해당 열에 null 값을 지정하십시오.

+0

mysqli의 관련성은 무엇입니까? mysql-workbench? mysql-error-1064? –

답변

0

기존 쿼리를 변경하고 테이블을 자르는 것이 아니라 전체 테이블을 삭제하고 원본 emp 테이블의 복사본을 만든 다음 데이터를이 테이블에 삽입하는 것이 좋습니다. 그런 식으로 그들은 항상 같을 것입니다.

DROP TABLE emprefers IF EXISTS 
CREATE TABLE emprefers LIKE emp; 
INSERT INTO emprefers SELECT * FROM emp 
+0

그 이유는 작동하지 않을 수 있습니다 emp 테이블 열이 며칠 후에 다시 삭제 된 열을 추가하고 우리는 그 열에 대해 null 또는 빈 값을 전달하는 식별을 위해 삭제 된 열을 알고 싶습니다.그래서 우리는 distrube emprefers 테이블 구조를 원하지 않는다 – user3457912

+0

다른 해결책을 내게 알려주세요. – user3457912

0

이 문장은 테이블을 즉시 만듭니다.

CREATE TABLE databasename.emprefers SELECT * FROM databasename.emp;

관련 문제