MySQL の 2つのテーブルの違い

Shraddha Paghdar 2023年6月20日
MySQL の 2つのテーブルの違い

今日の投稿では、MySQL で 2つのテーブルの違いを見つける方法を学びます。

MySQL の 2つのテーブルの違い

2つのテーブルを比較して、一方のテーブルに一致するレコードがないレコードを見つける必要があることがよくあります。

たとえば、新しいデータベースには、従来のデータベースとは異なるスキーマがあります。 古いデータベースから新しいデータベースにすべてのデータを転送し、転送が成功するようにすることは、私たちの責任です。

データを検証するには、2つのテーブル (従来のデータベースのテーブルと新しいデータベースのテーブル) を比較し、一致しないレコードを見つける必要があります。

table_1table_2 の 2つのテーブルの列を比較する必要がある状況を考えてみましょう。 次の手順では、2つのテーブルを比較して、一致しないレコードを見つけます。

  1. まず、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;
    
  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 Paghdar avatar Shraddha Paghdar avatar

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

関連記事 - MySQL Table