Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách so sánh dữ liệu giữa hai bảng MySQL

Đôi khi cần xác định dữ liệu không khớp giữa hai bảng, đặc biệt khi migrate dữ liệu. So sánh bằng cách dùng UNION ALL + GROUP BY + HAVING COUNT(*) = 1. Ví dụ hai bảng students và student1:

mysql> Select * from students;
+--------+--------+----------+
| RollNo | Name   | Subject  |
+--------+--------+----------+
|    100 | Gaurav | Computer |
|    101 | Raman  | History  |
|    102 | Somil  | Computer |
+--------+--------+----------+
3 rows in set (0.00 sec)

mysql> select * from student1;
+--------+--------+----------+
| RollNo | Name   | Subject  |
+--------+--------+----------+
|    100 | Gaurav | Computer |
|    101 | Raman  | History  |
|    102 | Somil  | Computer |
|    103 | Rahul  | DBMS     |
|    104 | Aarav  | History  |
+--------+--------+----------+
5 rows in set (0.00 sec)

Truy vấn tìm hàng không khớp:

mysql> Select RollNo,Name,Subject from (select RollNo,Name,Subject from students union all select RollNo,Name,Subject from Student1) as std GROUP BY RollNo,Name,Subject HAVING Count(*) = 1 ORDER BY RollNo;
+--------+-------+---------+
| RollNo | Name  | Subject |
+--------+-------+---------+
|    103 | Rahul | DBMS    |
|    104 | Aarav | History |
+--------+-------+---------+
1 rows in set (0.02 sec)