2017-05-19 1 views
0

Users 데이터베이스의 백업 프로세스를 자동화하려면 두 테이블 (UsersArchivedUsers)의 구조를 비교하고 싶습니다.두 MYSQL 테이블 간의 열 비교

두 테이블 사이의 열을 비교하여 같은 열이 있는지 확인하십시오. 즉, 테이블에 추가되지 않고 firebase_id 같은 열이 Users 테이블에 추가되지 않습니다.

stackexchange의 @RolandoMySQLDBA 사용자는 데이터베이스의 두 테이블을 비교하는 쿼리를 함께 사용합니다.

SELECT IF(COUNT(1)>0,'Differences','No Differences') Comparison FROM 
(
    SELECT 
     column_name,ordinal_position, 
     data_type,column_type,COUNT(1) rowcount 
    FROM information_schema.columns 
    WHERE table_schema=DATABASE() 
    AND table_name IN ('users','archived_users') 
    GROUP BY 
     column_name,ordinal_position, 
     data_type,column_type 
    HAVING COUNT(1)=1 
) A; 

두 테이블의 열을 비교할 수있는 쿼리를 생각해보십시오.

답변

1

는이 작업을 수행하는 여러 가지 방법이 있지만, MySQL 용 나는이 제안 :

이 쿼리 제프 스미스 ( here)

에 의해 블로그에서 공급되는

SELECT MIN(TableName) as TableName, ID, COL1, COL2, COL3 ... 
FROM 
(
    SELECT 'Table A' as TableName, A.ID, A.COL1, A.COL2, A.COL3, ... 
    FROM A 
    UNION ALL 
    SELECT 'Table B' as TableName, B.ID, B.COL1, B.COl2, B.COL3, ... 
    FROM B 
) tmp 
GROUP BY ID, COL1, COL2, COL3 ... 
HAVING COUNT(*) = 1 
ORDER BY ID 

이 방법의 장점은 당신입니다 어떤 테이블에 다른 행이 있는지 알아보기

이 주제에 대한 이전의 질문은 여기에서 EXCEPT 또는 MINUS를 지원하는 DBMS 플랫폼에 대한 다른 방법을 보여줍니다. SQL compare data from two tables

+0

감사합니다. @Used_By_ 이미 실행이 중지되었으므로 잘 읽었습니다. – VegaStudios

+0

정말 기쁩니다. 즐겨. –