Computer >> Máy Tính >  >> Lập trình >> MySQL

So sánh hai bảng và trả về id bị thiếu trong MySQL?

Để so sánh hai bảng và trả về id bị thiếu, bạn cần sử dụng một truy vấn con. Cú pháp như sau -

SELECT yourFirstTableName.yourIdColumnName FROM yourFirstTableName
WHERE NOT IN(SELECT yourSecondTableName.yourIdColumnName FROM youSecondTableName);

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng với các trường mẫu và sau đó chúng ta 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 một câu lệnh chọn. 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)
Display all records from the table using select statement:
mysql> select *from Second_Table;

Sau đây là kết quả -

+------+
| Id   |
+------+
|    2 |
|    4 |
+------+
2 rows in set (0.00 sec)

Đây là truy vấn để so sánh hai bảng và trả về id bị thiếu -

mysql> select First_Table.Id from First_Table where
   -> First_Table.Id NOT IN(select Second_Table.Id from Second_Table);

Sau đây là kết quả -

+------+
| Id   |
+------+
|    1 |
| 3 |
+------+
2 rows in set (0.00 sec)