MySQL の 2つのテーブルの違い
今日の投稿では、MySQL で 2つのテーブルの違いを見つける方法を学びます。
MySQL の 2つのテーブルの違い
2つのテーブルを比較して、一方のテーブルに一致するレコードがないレコードを見つける必要があることがよくあります。
たとえば、新しいデータベースには、従来のデータベースとは異なるスキーマがあります。 古いデータベースから新しいデータベースにすべてのデータを転送し、転送が成功するようにすることは、私たちの責任です。
データを検証するには、2つのテーブル (従来のデータベースのテーブルと新しいデータベースのテーブル) を比較し、一致しないレコードを見つける必要があります。
table_1
と table_2
の 2つのテーブルの列を比較する必要がある状況を考えてみましょう。 次の手順では、2つのテーブルを比較して、一致しないレコードを見つけます。
-
まず、
UNION
ステートメントを使用して両方のテーブルの行を結合します。 必要な列のみを含めます。 比較は、返された結果セットを使用して実行されます。SELECT table_1.primary_key, table_1.column_1, table_1.column2 FROM table_1 UNION ALL SELECT table_2.primary_key, table_2.column_1, table_2.column2 FROM table_2;
-
次に、主キーと比較が必要な列に従って、レコードをグループ化する必要があります。
COUNT(*)
関数は、比較する必要がある列の値が類似している場合、2
を生成します。 それ以外の場合は1
を返します。SELECT primary_key, column_1, column_2 FROM ( SELECT table_1.primary_key, table_1.column_1 FROM table_1 UNION ALL SELECT table_2.primary_key, table_2.column_1 FROM table_2 ) temporary_table GROUP BY primary_key, column_1, column_2 HAVING COUNT(*) = 1 ORDER BY primary_key
前のアイデアをよりよく理解するために、次の例を検討してください。
SELECT employee_id, department, email
FROM (
SELECT employee_id, department, email FROM employee_old_table
UNION ALL
SELECT employee_id,department, email FROM employee_new_table
) temporary_table
GROUP BY employee_id, department, email
HAVING count(*) = 1
ORDER BY employee_id;
上記の例では、古い従業員テーブルと新しい従業員テーブルを比較し、結果は temporary_table
に保存されます。 結果が返されたら、employee_id
、部門名、および電子メール ID でグループ化します。
比較する列の値が同じ場合、COUNT(*)
メソッドは 2
を返します。 それ以外の場合は 1
を返します。 したがって、HAVING
句を使用して一意の値を確認します。
最後に、employee_id
の昇順で結果を出力します。
上記のコード行を、MySQL と互換性のあるブラウザーで実行します。 次の結果が表示されます。
+-------------+--------------------+----------------------+
| employee_id | department | email |
+-------------+--------------------+----------------------+
| 14 | TeleCom | john_doe@example.com |
| 15 | TeleCommunication | johndoe@example.com |
+-------------+--------------------+----------------------+
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn