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

Tìm bản ghi ở bảng này nhưng không có ở bảng kia trong MySQL

Sử dụng truy vấn con (subquery) với NOT IN để tìm các bản ghi chỉ có ở bảng thứ hai.

Dữ liệu mẫu

Bảng PresentHistory (2 hàng):

+-------+---------+
| HisID | HisName |
+-------+---------+
| 1     | John    |
| 2     | Bob     |
+-------+---------+

Bảng PastHistory (4 hàng):

+--------+----------+
| PastId | PastName |
+--------+----------+
| 1      | John     |
| 2      | Bob      |
| 3      | Carol    |
| 4      | Jason    |
+--------+----------+

Truy vấn tìm bản ghi chỉ có ở PastHistory

SELECT * FROM PastHistory
WHERE PastName NOT IN (SELECT HisName FROM PresentHistory);

Kết quả:

+--------+----------+
| PastId | PastName |
+--------+----------+
| 3      | Carol    |
| 4      | Jason    |
+--------+----------+

Hai bản ghi Carol và Jason chỉ tồn tại trong PastHistory.

Lưu ý hiệu năng

Với dữ liệu lớn, NOT EXISTS hoặc LEFT JOIN ... WHERE right.id IS NULL thường hiệu quả hơn NOT IN (đặc biệt khi subquery trả về NULL).