Q&A

  • 두개의 테이블을 비교하여 같은것을 삭제하고자 할때.
안녕하세요...

질문을 드리게 됐네요...



2개의 테이블을 비교하여 즉 A 테이블과 B 테이블이 있다고 하면...

두개는 다른 테이블인데요...

A 테이블의 NUM 필드와

B 테이블의 NUM2 필드를 비교하여 같은 필드내에 같은 내용이 있을경우,..

A 테이블의 해당 레코드를 지우고 실어요...



즉 서로 다른 레코드만 남게 하고 싶군요...

ttable 를 사용하여 비교 하여 봤지만... A xpdlqmfdl 207메가고 60만건이 넘는 자료기 때문에 도저히 시간이 많이 걸리는 군요...



SQL 을 이용하면 빠를것 같은데....

둘다 DBF 타입입니다...

도와 주십시요...



2  COMMENTS
  • Profile
    신호성 1999.04.27 03:49
    류 wrote:

    > 안녕하세요...

    > 질문을 드리게 됐네요...

    >

    > 2개의 테이블을 비교하여 즉 A 테이블과 B 테이블이 있다고 하면...

    > 두개는 다른 테이블인데요...

    > A 테이블의 NUM 필드와

    > B 테이블의 NUM2 필드를 비교하여 같은 필드내에 같은 내용이 있을경우,..

    > A 테이블의 해당 레코드를 지우고 실어요...

    >

    > 즉 서로 다른 레코드만 남게 하고 싶군요...

    > ttable 를 사용하여 비교 하여 봤지만... A xpdlqmfdl 207메가고 60만건이 넘는 자료기 때문에 도저히 시간이 많이 걸리는 군요...

    >

    > SQL 을 이용하면 빠를것 같은데....

    > 둘다 DBF 타입입니다...

    > 도와 주십시요...

    >



    안녕하세요?

    신호성 입니다.

    아래내용으로 실행해 보세요



    DELETE FROM A

    WHERE NUM IN (SELECT DISTINCT NUM2 FROM B)



















  • Profile
    구창민 1999.04.26 22:20
    류 wrote:

    > 안녕하세요...

    > 질문을 드리게 됐네요...

    >

    > 2개의 테이블을 비교하여 즉 A 테이블과 B 테이블이 있다고 하면...

    > 두개는 다른 테이블인데요...

    > A 테이블의 NUM 필드와

    > B 테이블의 NUM2 필드를 비교하여 같은 필드내에 같은 내용이 있을경우,..

    > A 테이블의 해당 레코드를 지우고 실어요...

    >

    > 즉 서로 다른 레코드만 남게 하고 싶군요...

    > ttable 를 사용하여 비교 하여 봤지만... A xpdlqmfdl 207메가고 60만건이 넘는 자료기 때문에 도저히 시간이 많이 걸리는 군요...

    >

    > SQL 을 이용하면 빠를것 같은데....

    > 둘다 DBF 타입입니다...

    > 도와 주십시요...

    >



    류님 안녕하세요? 구창민입니다.

    아래와 같은 방법이 어떨까요?



    먼저 두 테이블을 Query1, Query2에 붙였다 가정하구,

    의사코드를 적어보겠습니다.



    Query1.Open; //비교대상필드를 먼저 오픈하구요,



    while( not Query1.EOF ) //비교가 될 테이블의 끝까지 루프를 돌며...

    begin

    Query2.Close

    Query2..SQL.Clear;

    Query2..Sql.Add('Delete From 테이블명 Where Name =:Name');

    Query2..ParamByName('Name').AsString := Query1.FieldByName(특정필드);

    Query2..ExecSQL;

    Query1.Next; //다음 비교대상을 위해 레코드 이동

    end;

    음..말씀하신 작업을 제가 지식이 부족해 한방에 쿼리를

    날리긴 힘들거 같구요..

    그리고, 60만건 정도의 데이타라면 매우빠른 속도를 낼수 있는

    쿼리는 아마 존재하지 않을거 같네요.

    위처럼 작성한 의사코드와 같은 방법으로 하면 되지 않을까 싶습니다.

    직접 테스트 해보진 못했습니다.

    그럼.. 즐거운 코딩되시길..