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

Tìm bản ghi từ một bảng MySQL không tồn tại trong bảng khác?

Để tìm các bản ghi từ một bảng MySQL không tồn tại trong một bảng khác, chúng ta có thể sử dụng truy vấn con cho bảng không có bản ghi. Điều này có thể được hiểu rõ hơn bằng cách sử dụng các bước đã nói -

Đầu tiên, một bảng được tạo bằng lệnh create. Tên bảng là 'PresentHistory' và nó có hai cột. Điều này được đưa ra như sau -

mysql> CREATE table PresentHistory
-> (
-> HisID int,
-> HisName varchar(100)
-> );
Query OK, 0 rows affected (0.54 sec)

Sau khi tạo bảng, một số bản ghi được chèn sẽ có trong bảng thứ hai. Điều này được thực hiện với sự trợ giúp của lệnh insert như sau -

mysql> INSERT into PresentHistory values(1,'John');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into PresentHistory values(2,'Bob');
Query OK, 1 row affected (0.15 sec)

Sau khi chèn các bản ghi thành công, chúng được hiển thị với câu lệnh select như sau -

mysql> SELECT * from PresentHistory;

Sau khi thực hiện truy vấn trên, kết quả thu được là.

+-------+---------+
| HisID | HisName |
+-------+---------+
| 1     | John    |
| 2     | Bob     |
+-------+---------+
2 rows in set (0.00 sec)

Bây giờ, một bảng thứ hai được tạo bằng lệnh create. Bảng này có tên là ‘PastHistory’và chứa hai cột như được cung cấp bên dưới.

mysql> CREATE table PastHistory
-> (
-> PastId int,
-> PastName varchar(100)
-> );
Query OK, 0 rows affected (0.74 sec)

Sau khi tạo bảng, một số bản ghi có trong bảng đầu tiên và một số bản ghi không có trong bảng đầu tiên được chèn vào bảng PastHistory.

mysql> INSERT into PastHistory values(1,'John');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into PastHistory values(2,'Bob');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into PastHistory values(3,'Carol');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into PastHistory values(4,'Jason');
Query OK, 1 row affected (0.16 sec)

Bây giờ, có 4 bản ghi trong bảng thứ hai. Trong số này, 2 bản ghi từ bảng đầu tiên và 2 bản ghi khác nhau trong bảng thứ hai.

Các bản ghi trong bảng thứ hai được xem với sự trợ giúp của câu lệnh select như sau -

mysql> SELECT * from PastHistory;

Đầu ra của truy vấn trên là

+--------+----------+
| PastId | PastName |
+--------+----------+
| 1      | John     |
| 2      | Bob      |
| 3      | Carol    |
| 4      | Jason    |
+--------+----------+
4 rows in set (0.00 sec)

Cú pháp để kiểm tra các bản ghi từ một bảng không tồn tại trong bảng thứ hai được cung cấp dưới dạng các bản ghi -

SELECT * from yourSecondTableName where columnNamefromSecondtable NOT IN
(SELECT columnNamefromfirsttable from yourFirstTableName);

Truy vấn đã cho được sử dụng để lấy các bản ghi khác biệt trong bảng thứ hai -

mysql> SELECT * from PastHistory where PastName not in (select HisName from
PresentHistory);

Kết quả của truy vấn trên như sau -

+--------+----------+
| PastId | PastName |
+--------+----------+
| 3      | Carol    |
| 4      | Jason    |
+--------+----------+
2 rows in set (0.00 sec)

Từ kết quả trên, rõ ràng là chúng tôi đã tìm thấy hai bản ghi không có trong bảng đầu tiên.