2017-05-19 20 views
0

Usersデータベースのバックアッププロセスを自動化するために、2つのテーブル(UsersArchivedUsers)の構造を比較したいと思います。2つのMYSQLテーブルの列を比較

両方のテーブル間の列を比較して、同じ列が存在することを確認します。つまり、テーブルに追加されずにのような列はUsersテーブルに追加されません。

stackexchangeのユーザー@RolandoMySQLDBAは、データベース内の2つのテーブルを比較するクエリをまとめます。

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; 

2つのテーブルの列を比較できるクエリはありますか。

答えて

1

あり、これを行うには、いくつかの方法がありますが、MySQLのために、私はこれをお勧め:

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 

このクエリは、このアプローチの利点は、あなたであるジェフ・スミス(here

によってブログから供給されますどのテーブルが異なる行を持っているかを知る

ここでは、特にEXCEPTまたはMINUSをサポートするDBMSプラットフォームの他の方法を示しています。 SQL compare data from two tables

+0

ありがとうございました@Used_By_既に稼動停止のため、よく読んでください! – VegaStudios

+0

喜んでください。楽しい。 –