>

표 IA

Id Status  Details  
1   open    aaa  
2   close   bbb  
3   open    ccc  
4   open    ddd  
5   open    eeee  
6   open    ffff  
7   open    gggg  
8   close   iii  
9   close   hhh  
10  open    jjj  
primary key ID

테이블 스냅 샷 _IA

Id  Status  Details  
1   open    aaa  
2   close   bbb  
3   open    ccc  
4   open    ddd  
5   open    eeee  
4   open    ffff  
5   open    sdsd  
4   open    sdsdd 

<올>
  • IA 테이블 데이터는 매일 변경됩니다
  • 스냅 샷 테이블에 기본 키가 없습니다
  • 스냅 샷 테이블에는 테이블 IA의 새 행이 있어야합니다
  • 스냅 샷 테이블에 IA 테이블 ID가 있지만 스냅 샷 테이블에서 상태가 열려있는 경우 스냅 샷 테이블은 IA 테이블에서 행을 가져옵니다
  • 예 :

    select T1.id1,T1.status,T1.details from   
    IA T1,  
    snapshot_IA T2  
    where  
    T1.id1 = T2.ID1  
    and T2.status <> 'close' 
    
    

    한 가지 방법은 커서를 사용하는 것입니다.

    이 외에 다른 효율적인 방법을 제안 할 수 있습니까?

    • 답변 # 1

      Insert into IA 
       select T1.id1,T1.status,T1.details from   
      IA T1 where not exists (
      Select 1 from Snapshot_IA WHERE
      T1.id1 = T2.ID1  
      and T2.status = 'close')
      
      

    관련 자료

  • 이전 database design - 논리식을 저장하는 권장 방법
  • 다음 innodb - MySQL의 테이블 스페이스, frm 및 ibd 파일 및 데이터베이스 페이지 간의 관계는 무엇입니까?