MySQL의 두 테이블의 차이점

Shraddha Paghdar 2023년6월20일
MySQL의 두 테이블의 차이점

오늘 포스팅에서는 MySQL에서 두 테이블의 차이점을 찾는 방법에 대해 알아보겠습니다.

MySQL의 두 테이블의 차이점

한 테이블에서 다른 테이블에 일치하는 레코드가 없는 레코드를 찾기 위해 두 테이블을 비교해야 하는 경우가 자주 있습니다.

예를 들어 새 데이터베이스에는 레거시 데이터베이스와 다른 스키마가 있습니다. 레거시 데이터베이스에서 새 데이터베이스로 모든 데이터를 전송하고 전송이 성공했는지 확인하는 것은 우리의 책임입니다.

데이터를 확인하려면 레거시 데이터베이스와 새 데이터베이스의 두 테이블을 비교하고 일치하지 않는 레코드를 찾아야 합니다.

두 테이블 table_1table_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