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

Truy vấn MySQL chọn hàng từ bảng này không có trong bảng kia?


Tạo 2 bảng và dùng NATURAL LEFT JOIN để lấy hàng chỉ có trong bảng đầu tiên.

Tạo bảng đầu tiên

mysql> CREATE TABLE FirstTableDemo (
    -> id INT,
    -> name VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.48 sec)
mysql> INSERT INTO FirstTableDemo VALUES(1,'Bob'),(2,'John'),(3,'Carol');
Query OK, 3 rows affected (0.13 sec)
mysql> SELECT * FROM FirstTableDemo;
+------+-------+
| id   | name  |
+------+-------+
| 1    | Bob   |
| 2    | John  |
| 3    | Carol |
+------+-------+
3 rows in set (0.00 sec)

Tạo bảng thứ hai

mysql> CREATE TABLE SecondTableDemo (
    -> id INT,
    -> name VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.62 sec)
mysql> INSERT INTO SecondTableDemo VALUES(1,'Bob'),(2,'John');
Query OK, 2 rows affected (0.12 sec)
mysql> SELECT * FROM SecondTableDemo;
+------+------+
| id   | name |
+------+------+
| 1    | Bob  |
| 2    | John |
+------+------+

Truy vấn lấy hàng chỉ có trong bảng 1

mysql> SELECT tbl1.*
    -> FROM FirstTableDemo tbl1
    -> NATURAL LEFT JOIN SecondTableDemo tbl2
    -> WHERE tbl2.name IS NULL;
+------+-------+
| id   | name  |
+------+-------+
| 3    | Carol |
+------+-------+
1 row in set (0.03 sec)

Kết quả trả về Carol - hàng chỉ tồn tại trong FirstTableDemo.