2010-05-16 10 views
2

동일한 데이터베이스가 2 개 있습니다. abc15 및 abc18. 하지만 데이터베이스 중 하나에 테이블이 하나 더있어 찾아야합니다. 나는 다음 쿼리가 그것을 반환해야한다고 생각했지만 내가 기대하는 레코드를 보여주지 않는다.비교 2 데이터베이스

select * from information_schema.tables as a 
    left join information_schema.tables as b 
     on a.TABLE_SCHEMA=b.TABLE_SCHEMA AND a.TABLE_NAME=b.TABLE_NAME 
    where a.TABLE_SCHEMA = 'abc15' AND b.TABLE_SCHEMA='abc18' and 
     b.TABLE_NAME IS NULL 
+1

쿼리는 한 방향으로 만 확인합니다. 새 "테이블"이 "b" 데이터 베이스? 외부 조인으로 전환하십시오. – Zachary

답변

1
$ mysqldumpslow --database abc15 >/tmp/a 
$ mysqldumpslow --database abc18 >/tmp/b 
$ diff /tmp/a /tmp/b 
3

데이터베이스 b에 여분의 테이블이 있으면 어떻게 될까요? 끝 부분에 전체 외부 조인과 여분의 제약 조건을 시도하십시오 (OR a.TABLE_NAME IS NULL)