2011-03-29 8 views
4

두 테이블이 있습니다. 그 안의 값은 동일하지 않지만 strcuture의 대부분은 동일합니다. 테이블 중 하나에 필드가 있습니다. I는 table_2 structore over NULL as table_1 및 set address 및 언어에 복사 like wouldmysql : 두 테이블의 구조 비교

|table_1| |table_2| 
id   id 
name   name 
telephone telephone 
email  email 
      address 
      language 

: 간단한 형태의 는 I는 다음과 같이 something 있습니다. 이렇게하려면, 내 실제 테이블이 엉망 (30 열 이상)이기 때문에 명시 적으로 null로 설정해야합니다. 나는 단지 4-5 개의 새로운 필드를 가지고 있지만, 두 개의 테이블 사이의 구조를 비교하고 그 차이를 보는 방법이 있습니까? 나는 새로운 분야를 직접 추가 할 것이다.

답변

10

다음 (테스트되지 않은) SQL은 두 테이블에있는 열의 목록을 제공해야합니다.
in_table_1 및 in_table_2 열은 해당 테이블에 열이 있으면 '예'를 포함합니다.

select column_name 
     ,max(case when table_name = 'table_1' then 'Yes' end) as in_table_1 
     ,max(case when table_name = 'table_2' then 'Yes' end) as in_table_2 
    from information_schema.columns 
where table_name in('table_1', 'table_2') 
    and table_schema = 'your_database' 
group 
    by column_name 
order 
    by column_name; 

만 두 테이블에없는 열을 반환하는 having count(*) = 1을 추가 할 수 있습니다.

데이터 유형을 추가 할 수도 있습니다. 좀 봐봐 INFORMATION_SCHEMA

+0

감사합니다, 이것은 매우 유용한 작은 쿼리입니다 :) – WraithLux