Mysql so sánh hai cột từ các bảng khác nhau

Nhiều lần bạn có thể gặp phải tình huống khi bạn muốn so sánh hai bảng và lấy các bản ghi chưa khớp từ chúng. Đây là một thực tế phổ biến khi di chuyển cơ sở dữ liệu được thực hiện. Vì vậy, trong hướng dẫn này, chúng ta sẽ học cách so sánh hai bảng để tìm các bản ghi không khớp. Vậy hãy bắt đầu

điều kiện tiên quyết

Trong MySQL, như đã nêu trước đó, hai bảng được so sánh khi quá trình di chuyển dữ liệu được thực hiện để tìm dữ liệu không khớp. Ví dụ: cơ sở dữ liệu mới có thể có lược đồ khác với cơ sở dữ liệu cũ/cũ. Vì vậy, chúng ta phải kiểm tra chéo xem dữ liệu được di chuyển có giống hoàn toàn với dữ liệu trước đó không

Trong trường hợp này, chúng ta có thể so sánh hai bảng để kiểm tra dữ liệu khớp và dữ liệu không khớp từ cơ sở dữ liệu cũ và cơ sở dữ liệu mới. Đối với điều này, chúng ta có thể sử dụng các thuật ngữ và chức năng của MySQL như phép nối, phép hợp, hàm tổng hợp, v.v.

Bây giờ hãy xem cách chúng ta có thể so sánh hai bảng và tìm dữ liệu chưa khớp

So sánh hai bảng trong MySQL

Để so sánh hai bảng, chúng ta có thể sử dụng các truy vấn lồng nhau hoặc MySQL cũng tham gia. Tuy nhiên, chúng tôi sẽ sử dụng toán tử UNION để tìm các giá trị chưa khớp từ hai bảng

Cách tiếp cận của chúng tôi sẽ như sau -

  • Đầu tiên, tìm sự kết hợp của hai bảng
  • Thứ hai, chúng ta sẽ sử dụng mệnh đề GROUP BY để nhóm các hàng lại với nhau
  • Thứ ba, các nhóm có số đếm là 1 sẽ được chọn bằng mệnh đề HAVING
  • Cuối cùng, chúng tôi sẽ sắp xếp thứ tự các hàng bằng cách sử dụng mệnh đề ORDER BY và hiển thị chúng

Đây là cách tiếp cận của chúng tôi để giải quyết vấn đề. Bây giờ hãy bắt đầu viết mã

Đầu tiên, chúng ta sẽ tạo hai bảng có cùng mô tả. Lưu ý rằng, chúng tôi đã thêm một cột thứ ba trong bảng thứ hai để có thể dễ dàng phân biệt hàng mới được thêm vào

CREATE TABLE table1[ id int auto_increment primary key, title varchar[255] ]; CREATE TABLE table2[ id int auto_increment primary key, title varchar[255], entry varchar[255] ];

Code language: SQL [Structured Query Language] [sql]

Tạo hai bảng

Các bảng được tạo thành công. Hãy chèn chính xác cùng một dữ liệu vào chúng

INSERT INTO table1[title] VALUES['row 1'],['row 2'],['row 3']; INSERT INTO table2[title,entry] SELECT title, 'data migration' FROM table1;

Code language: SQL [Structured Query Language] [sql]

Chèn dữ liệu vào bảng

Bây giờ hãy viết một truy vấn SQL để tìm dữ liệu chưa khớp bằng cách so sánh chúng

SELECT id,title FROM [ SELECT id, title FROM table1 UNION ALL SELECT id,title FROM table2 ]newTable GROUP BY id, title HAVING count[*] = 1 ORDER BY id;

Code language: SQL [Structured Query Language] [sql]

Đầu tiên, hãy nhìn vào bên trong dấu ngoặc tròn

  • Chúng tôi đã kết hợp dữ liệu của hai bảng và đặt bí danh “newTable” cho bảng mới dẫn xuất
  • Bây giờ, câu lệnh SELECT đầu tiên sẽ chọn id và tiêu đề từ bảng dẫn xuất mà chúng tôi đã đề cập ở trên. Chúng tôi đã sử dụng mệnh đề GROUP BY để nhóm các hàng theo id và tiêu đề
  • Tiếp theo, chúng tôi đã sử dụng mệnh đề HAVING nơi chúng tôi sẽ kiểm tra xem các nhóm được tạo bởi GROUP BY có phải là tập hợp chỉ một lệnh không. Bằng cách này, chúng tôi sẽ tìm thấy các bản ghi không khớp vì tất cả các bản ghi khớp là nhóm hai và mệnh đề HAVING sẽ lọc các bản ghi chỉ là nhóm một
  • Sử dụng mệnh đề ORDER BY, chúng tôi sắp xếp các bản ghi theo id. Bây giờ hãy kiểm tra đầu ra của truy vấn trên

Lưu ý rằng, cả hai bảng đều chứa chính xác dữ liệu giống như hiện tại trong cột id và tiêu đề. Vì vậy, chúng ta sẽ nhận được một kết quả trống

Tập kết quả trống

Như bạn có thể thấy, chúng tôi đã nhận được một tập hợp kết quả trống

Hãy thêm một hàng mới vào bảng thứ hai. Vì vậy, khi chúng tôi thực hiện truy vấn trên, chúng tôi sẽ nhận được kết quả không trống

INSERT INTO table2[title,entry] VALUES['new row 4','new row'];

Code language: SQL [Structured Query Language] [sql]

Bây giờ, hãy thực hiện truy vấn mà chúng tôi đã tạo ở trên để so sánh và tìm các bản ghi chưa khớp

Sản lượng dự kiến

Như bạn có thể thấy, bản ghi mới không có trong bảng đầu tiên nên chúng tôi đã nhận bản ghi mới đó

Bằng cách này, chúng ta có thể tìm thấy các bản ghi chưa khớp trong MySQL bằng cách so sánh hai bảng

Phần kết luận

Trong hướng dẫn này, chúng ta đã học cách so sánh hai bảng trên các cột cụ thể để tìm các bản ghi chưa khớp. Chúng tôi chỉ thấy một phương pháp. Tuy nhiên, bạn có thể thử các phương pháp khác bằng cách sử dụng THAM GIA và các hàm tổng hợp khác để tìm các bản ghi chưa khớp. Đó là tất cả trong hướng dẫn này. Hẹn gặp lại bạn trong bài hướng dẫn tiếp theo

Làm cách nào để so sánh hai bảng khác nhau trong MySQL?

MySQL So sánh hai bảng .
CHỌN t1. pk, t1. c1 TỪ t1 ĐOÀN KẾT TẤT CẢ CHỌN t2. pk, t2. c1 TỪ t2. .
CHỌN pk, c1 TỪ [ CHỌN t1. pk, t1. c1 TỪ t1 ĐOÀN KẾT TẤT CẢ CHỌN t2. pk, t2. c1 TỪ t2 ] t GROUP BY pk, c1 HAVING COUNT[*] = 1 ORDER BY pk

Làm cách nào để so sánh hai bản ghi từ các bảng khác nhau trong SQL?

So sánh kết quả của hai truy vấn . bảng1 và bảng2. Ở đây, chúng ta sẽ sử dụng UNION ALL để kết hợp các bản ghi dựa trên các cột cần so sánh . Nếu các giá trị trong các cột cần so sánh giống nhau thì COUNT[*] trả về 2, ngược lại COUNT[*] trả về 1.

Làm cách nào để so sánh tên cột hai bảng trong MySQL?

MySQL so sánh hai bảng từ các cơ sở dữ liệu khác nhau . ]

Làm cách nào để chọn hai cột khác nhau từ hai bảng khác nhau trong SQL?

Để làm như vậy, chúng ta cần sử dụng truy vấn nối để lấy dữ liệu từ nhiều bảng. .
CHỌN p. p_id, p. cus_id, p. p_name, c1. tên1, c2. tên2
TỪ sản phẩm NHƯ p
TRÁI THAM GIA khách hàng1 NHƯ c1
Trên P. cus_id=c1. cus_id
TRÁI THAM GIA khách hàng2 NHƯ c2
Trên P. cus_id = c2. cus_id

Chủ Đề