2012-07-20 2 views
0

부모 테이블 table1에 연결된 테이블, 예를 들어 table2가 있습니다. 또한 table3에 연결되어있는 table2에 해당 내용을 복사하려고합니다. Table3에는 외래 키 열에 table1에없는 일부 값이있을 수 있습니다. & 값을 복사하려고하면 오류가 발생합니다. 부모 테이블에 참조가있는 레코드 만 복사하려면 어떻게해야합니까?참조 키가있는 테이블에 레코드를 복사 할 수 없습니다.

+1

지금까지 시도한 것을 보여줄 수 있습니까? –

답변

0
insert into table2 (col1, col2, ...) 
select col1, col2, ... from table3 
where table3.refcol in (select keycol from table1) 

물론 샘플을 실제 열 이름으로 바꿔야합니다. :-)

+0

이것은 kaps가 게시 한 응답에 사용 된 조인보다 훨씬 효율적이지 않습니다. –

+0

실제 데이터 형식, 테이블 크기 및 인덱스 사용에 대해 알지 못해서 그런 말을하는 것은 이상합니다 ... mysql의 쿼리 최적화 프로그램에 약간의 신뢰를 줄 것을 권합니다.) –

+0

안녕하세요 쿠바. 내 의견은 데이터 유형, 테이블 크기 또는 색인에 관계없이 적용됩니다. IN()을 사용하여 조인을 에뮬레이트하는 것은 안티 패턴입니다. –

1
Insert into Table2 (<columnList>) 
Select <columnlist> 
From Table3 Inner join Table1 
On Table3.fieldFromTable3 = Table1.ReferredFieldFromTable1 

원하는대로 열을 사용하고 조인에 적절한 필드 이름을 입력하십시오.

관련 문제