Để so sánh hai bảng và trả về id bị thiếu, bạn cần sử dụng MySQL LEFT OUTER JOIN.
Hãy để chúng tôi tạo một bảng với các trường mẫu và sau đó chúng tôi sẽ chèn các bản ghi. Truy vấn để tạo bảng đầu tiên -
First_Table
mysql> create table First_Table -> ( -> Id int -> ); Query OK, 0 rows affected (0.88 sec)
Bây giờ chèn một số bản ghi trong bảng bằng cách sử dụng lệnh chèn. Truy vấn như sau -
mysql> insert into First_Table values(1); Query OK, 1 row affected (0.68 sec) mysql> insert into First_Table values(2); Query OK, 1 row affected (0.29 sec) mysql> insert into First_Table values(3); Query OK, 1 row affected (0.20 sec) mysql> insert into First_Table values(4); Query OK, 1 row affected (0.20 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -
mysql> select *from First_Table;
Sau đây là kết quả -
+------+ | Id | +------+ | 1 | | 2 | | 3 | | 4 | +------+ 4 rows in set (0.00 sec)
Đây là truy vấn để tạo bảng thứ hai -
Second_Table
mysql> create table Second_Table -> ( -> Id int -> ); Query OK, 0 rows affected (0.60 sec)
Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -
mysql> insert into Second_Table values(2); Query OK, 1 row affected (0.19 sec) mysql> insert into Second_Table values(4); Query OK, 1 row affected (0.20 sec)
Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -
mysql> select *from Second_Table;
Sau đây là kết quả -
+------+ | Id | +------+ | 2 | | 4 | +------+ 2 rows in set (0.00 sec)
Truy vấn như sau để so sánh hai bảng và trả về các ID bị thiếu bằng cách sử dụng LEFT OUTER JOIN -
mysql> SELECT First_Table.Id FROM First_Table -> LEFT OUTER JOIN Second_Table ON First_Table.Id = Second_Table.Id -> WHERE Second_Table.Id IS NULL;
Sau đây là kết quả -
+------+ | Id | +------+ | 1 | | 3 | +------+ 2 rows in set (0.00 sec)